1115cd2caSopenharmony_ci/* 2115cd2caSopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd. 3115cd2caSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4115cd2caSopenharmony_ci * you may not use this file except in compliance with the License. 5115cd2caSopenharmony_ci * You may obtain a copy of the License at 6115cd2caSopenharmony_ci * 7115cd2caSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8115cd2caSopenharmony_ci * 9115cd2caSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10115cd2caSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11115cd2caSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12115cd2caSopenharmony_ci * See the License for the specific language governing permissions and 13115cd2caSopenharmony_ci * limitations under the License. 14115cd2caSopenharmony_ci */ 15115cd2caSopenharmony_ci 16115cd2caSopenharmony_ci#include "uri_utils.h" 17115cd2caSopenharmony_ci#include "common.h" 18115cd2caSopenharmony_ci#include "hilog_wrapper.h" 19115cd2caSopenharmony_ci 20115cd2caSopenharmony_cinamespace OHOS { 21115cd2caSopenharmony_cinamespace Contacts { 22115cd2caSopenharmony_ciUriUtils::UriUtils(void) 23115cd2caSopenharmony_ci{ 24115cd2caSopenharmony_ci} 25115cd2caSopenharmony_ci 26115cd2caSopenharmony_ciUriUtils::~UriUtils() 27115cd2caSopenharmony_ci{ 28115cd2caSopenharmony_ci} 29115cd2caSopenharmony_ci 30115cd2caSopenharmony_cistd::map<std::string, std::string> UriUtils::getQueryParameter(OHOS::Uri &uri) 31115cd2caSopenharmony_ci{ 32115cd2caSopenharmony_ci std::map<std::string, std::string> mapQuery; 33115cd2caSopenharmony_ci std::string query = uri.GetQuery(); 34115cd2caSopenharmony_ci if (query.empty()) { 35115cd2caSopenharmony_ci return mapQuery; 36115cd2caSopenharmony_ci } 37115cd2caSopenharmony_ci std::vector<std::string> tempVector = split(query, "&"); 38115cd2caSopenharmony_ci unsigned int size = tempVector.size(); 39115cd2caSopenharmony_ci for (unsigned int i = 0; i < size; i++) { 40115cd2caSopenharmony_ci std::vector<std::string> childTempVector = split(tempVector[i], "="); 41115cd2caSopenharmony_ci size_t childSize = childTempVector.size(); 42115cd2caSopenharmony_ci if (childSize != REQUEST_PARAMS_NUM) { 43115cd2caSopenharmony_ci HILOG_ERROR("UriUtils uriParse getQueryParameter query parameter error"); 44115cd2caSopenharmony_ci break; 45115cd2caSopenharmony_ci } 46115cd2caSopenharmony_ci std::string key = childTempVector[0]; 47115cd2caSopenharmony_ci std::string value = childTempVector[1]; 48115cd2caSopenharmony_ci mapQuery.insert(std::make_pair(key, value)); 49115cd2caSopenharmony_ci } 50115cd2caSopenharmony_ci return mapQuery; 51115cd2caSopenharmony_ci} 52115cd2caSopenharmony_ci 53115cd2caSopenharmony_cistd::vector<std::string> UriUtils::split(const std::string &str, const std::string &split) 54115cd2caSopenharmony_ci{ 55115cd2caSopenharmony_ci char *saveChar = nullptr; 56115cd2caSopenharmony_ci char *token = strtok_r(const_cast<char *>(str.c_str()), split.c_str(), &saveChar); 57115cd2caSopenharmony_ci std::vector<std::string> result; 58115cd2caSopenharmony_ci while (token != nullptr) { 59115cd2caSopenharmony_ci result.emplace_back(token); 60115cd2caSopenharmony_ci token = strtok_r(nullptr, split.c_str(), &saveChar); 61115cd2caSopenharmony_ci } 62115cd2caSopenharmony_ci return result; 63115cd2caSopenharmony_ci} 64115cd2caSopenharmony_ci 65115cd2caSopenharmony_ciint UriUtils::UriParse(OHOS::Uri &uri, std::map<std::string, int> &keyMap) 66115cd2caSopenharmony_ci{ 67115cd2caSopenharmony_ci std::string path = uri.GetPath(); 68115cd2caSopenharmony_ci if (path.empty()) { 69115cd2caSopenharmony_ci return OPERATION_ERROR; 70115cd2caSopenharmony_ci } 71115cd2caSopenharmony_ci std::map<std::string, int>::iterator iterator = keyMap.find(path); 72115cd2caSopenharmony_ci if (iterator != keyMap.end()) { 73115cd2caSopenharmony_ci return iterator->second; 74115cd2caSopenharmony_ci } 75115cd2caSopenharmony_ci return OPERATION_ERROR; 76115cd2caSopenharmony_ci} 77115cd2caSopenharmony_ci} // namespace Contacts 78115cd2caSopenharmony_ci} // namespace OHOS