Rest.cpp (2024B)
1 // Copyright (c) Microsoft Corporation. 2 // Licensed under the MIT License. 3 #include "pch.h" 4 #include "AppInstallerStrings.h" 5 #include "winget/Rest.h" 6 #include <winget/JsonUtil.h> 7 8 namespace AppInstaller::Rest 9 { 10 utility::string_t GetRestAPIBaseUri(std::string uri) 11 { 12 // Trim 13 if (!uri.empty()) 14 { 15 uri = AppInstaller::Utility::Trim(uri); 16 17 // Remove trailing forward slash 18 if (uri.back() == '/') 19 { 20 uri.pop_back(); 21 } 22 } 23 24 // Encode the Uri 25 return web::uri::encode_uri(JSON::GetUtilityString(uri)); 26 } 27 28 bool IsValidUri(const utility::string_t& restApiUri) 29 { 30 return web::uri::validate(restApiUri); 31 } 32 33 utility::string_t AppendPathToUri(const utility::string_t& restApiUri, const utility::string_t& path) 34 { 35 web::uri_builder builder(restApiUri); 36 builder.append_path(path, true); 37 return builder.to_string(); 38 } 39 40 utility::string_t MakeQueryParam(std::string_view queryName, const std::string& queryValue) 41 { 42 std::string queryParam; 43 queryParam.append(queryName).append("=").append(queryValue); 44 45 return utility::conversions::to_string_t(queryParam); 46 } 47 48 utility::string_t AppendQueryParamsToUri(const utility::string_t& uri, const std::map<std::string_view, std::string>& queryParameters) 49 { 50 web::http::uri_builder builder{ uri }; 51 52 for (auto& pair : queryParameters) 53 { 54 builder.append_query(MakeQueryParam(pair.first, pair.second), true); 55 } 56 57 return builder.to_string(); 58 } 59 60 std::vector<std::string> GetUniqueItems(const std::vector<std::string>& list) 61 { 62 std::set<std::string> set; 63 for (const auto& item : list) 64 { 65 set.emplace(item); 66 } 67 68 std::vector<std::string> result{ set.begin(), set.end() }; 69 return result; 70 } 71 }