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);
41using Args = std::unordered_map<std::string, std::string, utils::
StrCaseHash>;
42using MultiArgs = std::multimap<std::string, std::string>;
43using PathArgs = std::unordered_map<std::string, std::string>;
71std::string
MakeQuery(
const std::unordered_map<std::string, std::string>& query_args);
80std::string
MakeQuery(std::initializer_list<std::pair<std::string_view, std::string_view>> query_args);
90std::string
MakeUrl(std::string_view path,
const Args& query_args);
100std::string
MakeUrl(std::string_view path,
const std::unordered_map<std::string, std::string>& query_args);
112std::string
MakeUrl(std::string_view path,
const Args& query_args, MultiArgs query_multiargs);
123 std::string_view path,
124 std::initializer_list<std::pair<std::string_view, std::string_view>> query_args
132 std::string_view path,
133 const std::vector<std::pair<std::string_view, std::string_view>>& query_args
159 std::string_view path,
160 const PathArgs& path_args,
161 const Args& query_args
176 std::string_view path,
177 const PathArgs& path_args,
178 const std::unordered_map<std::string, std::string>& query_args
196 std::string_view path,
197 const PathArgs& path_args,
198 const Args& query_args,
199 MultiArgs query_multiargs
214 std::string_view path,
215 const PathArgs& path_args,
216 std::initializer_list<std::pair<std::string_view, std::string_view>> query_args
227std::string_view ExtractMetaTypeFromUrlView(std::string_view url);
240std::string_view ExtractPathView(std::string_view url);
265std::string_view ExtractHostnameView(std::string_view url);
279std::string_view ExtractSchemeView(std::string_view url);
293std::string_view ExtractQueryView(std::string_view url);
309std::string_view ExtractFragmentView(std::string_view url);
317std::string UrlDecode(utils::
impl::InternalTag, std::string_view range);