18namespace Azure {
namespace Core {
20 inline std::string FormatEncodedUrlQueryParameters(
21 std::map<std::string, std::string>
const& encodedQueryParameters)
25 if (!encodedQueryParameters.empty())
28 for (
const auto& q : encodedQueryParameters)
30 queryStr += separator + q.first +
'=' + q.second;
51 std::string m_encodedPath;
53 std::map<std::string, std::string> m_encodedQueryParameters;
55 std::string GetUrlWithoutQuery(
bool relative)
const;
63 void AppendQueryParameters(
const std::string& encodedQueryParameters);
72 static std::string
Decode(
const std::string& value);
85 static std::string
Encode(
const std::string& value,
const std::string& doNotEncodeSymbols =
"");
99 explicit Url(
const std::string& encodedUrl);
109 void SetScheme(
const std::string& scheme) { m_scheme = scheme; }
116 void SetHost(
const std::string& encodedHost) { m_host = encodedHost; }
123 void SetPort(uint16_t port) { m_port = port; }
130 void SetPath(
const std::string& encodedPath) { m_encodedPath = encodedPath; }
142 m_encodedQueryParameters = std::move(queryParameters);
154 if (!m_encodedPath.empty() && m_encodedPath.back() !=
'/')
156 m_encodedPath +=
'/';
158 m_encodedPath += encodedPath;
173 m_encodedQueryParameters[encodedKey] = encodedValue;
183 m_encodedQueryParameters.erase(encodedKey);
191 const std::string&
GetHost()
const {
return m_host; }
198 const std::string&
GetPath()
const {
return m_encodedPath; }
220 return m_encodedQueryParameters;
227 const std::string&
GetScheme()
const {
return m_scheme; }
A map<string, string> with case-insensitive key comparison.
Represents the location where a request will be performed.
Definition url.hpp:46
Url()=default
Constructs a new, empty URL object.
std::string GetRelativeUrl() const
Gets the path and query parameters.
Url(const std::string &encodedUrl)
Constructs a URL from a URL-encoded string.
std::string GetAbsoluteUrl() const
Gets Scheme, host, path and query parameters.
void SetPort(uint16_t port)
Sets URL port.
Definition url.hpp:123
void RemoveQueryParameter(const std::string &encodedKey)
Removes an existing query parameter.
Definition url.hpp:181
const std::string & GetHost() const
Gets URL host.
Definition url.hpp:191
void AppendQueryParameter(const std::string &encodedKey, const std::string &encodedValue)
The value of a query parameter is expected to be non-URL-encoded and, by default, it will be encoded ...
Definition url.hpp:171
void SetScheme(const std::string &scheme)
Sets URL scheme.
Definition url.hpp:109
const std::string & GetScheme() const
Gets the URL scheme.
Definition url.hpp:227
static std::string Decode(const std::string &value)
Decodes value by transforming all escaped characters to it's non-encoded value.
void SetPath(const std::string &encodedPath)
Sets URL path.
Definition url.hpp:130
uint16_t GetPort() const
Gets the port number set for the URL.
Definition url.hpp:209
const std::string & GetPath() const
Gets the URL path.
Definition url.hpp:198
void SetQueryParameters(std::map< std::string, std::string > queryParameters)
Sets the query parameters from an existing query parameter map.
Definition url.hpp:139
std::map< std::string, std::string > GetQueryParameters() const
Gets a copy of the list of query parameters from the URL.
Definition url.hpp:218
void SetHost(const std::string &encodedHost)
Sets URL host.
Definition url.hpp:116
void AppendPath(const std::string &encodedPath)
Appends an element of URL path.
Definition url.hpp:152
static std::string Encode(const std::string &value, const std::string &doNotEncodeSymbols="")
Encodes value by escaping characters to the form of HH where HH are hex digits.
Compute the hash value for the input binary data, using SHA256, SHA384 and SHA512.
Definition azure_assert.hpp:57