11#include <unordered_map>
14#include <userver/utils/impl/internal_tag_fwd.hpp>
15#include <userver/utils/str_icase.hpp>
17USERVER_NAMESPACE_BEGIN
22 std::string_view scheme;
23 std::string_view host;
24 std::string_view path;
25 std::string_view query;
26 std::string_view fragment;
30[[deprecated(
"Use a more strict http::parser::UrlDecode instead")]] std::string
UrlDecode(std::string_view range);
39std::string
UrlEncode(std::string_view input_string);
64using Args = std::unordered_map<std::string, std::string,
utils::
StrCaseHash>;
65using MultiArgs = std::multimap<std::string, std::string>;
66using PathArgs = std::unordered_map<std::string, std::string>;
94std::string
MakeQuery(
const std::unordered_map<std::string, std::string>& query_args);
103std::string
MakeQuery(std::initializer_list<std::pair<std::string_view, std::string_view>> query_args);
113std::string
MakeUrl(std::string_view path,
const Args& query_args);
123std::string
MakeUrl(std::string_view path,
const std::unordered_map<std::string, std::string>& query_args);
135std::string
MakeUrl(std::string_view path,
const Args& query_args, MultiArgs query_multiargs);
146 std::string_view path,
147 std::initializer_list<std::pair<std::string_view, std::string_view>> query_args
155 std::string_view path,
156 const std::vector<std::pair<std::string_view, std::string_view>>& query_args
182 std::string_view path,
183 const PathArgs& path_args,
184 const Args& query_args
199 std::string_view path,
200 const PathArgs& path_args,
201 const std::unordered_map<std::string, std::string>& query_args
219 std::string_view path,
220 const PathArgs& path_args,
221 const Args& query_args,
222 MultiArgs query_multiargs
237 std::string_view path,
238 const PathArgs& path_args,
239 std::initializer_list<std::pair<std::string_view, std::string_view>> query_args
250std::string_view ExtractMetaTypeFromUrlView(std::string_view url);
263std::string_view ExtractPathView(std::string_view url);
288std::string_view ExtractHostnameView(std::string_view url);
302std::string_view ExtractSchemeView(std::string_view url);
316std::string_view ExtractQueryView(std::string_view url);
332std::string_view ExtractFragmentView(std::string_view url);
340std::string UrlDecode(
utils::impl::InternalTag, std::string_view range);