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);
36std::string
UrlEncode(std::string_view input_string);
55using Args = std::unordered_map<std::string, std::string,
utils::
StrCaseHash>;
56using MultiArgs = std::multimap<std::string, std::string>;
57using PathArgs = std::unordered_map<std::string, std::string>;
75std::string
MakeQuery(
const std::unordered_map<std::string, std::string>& query_args);
81std::string
MakeQuery(std::initializer_list<std::pair<std::string_view, std::string_view>> query_args);
88std::string
MakeUrl(std::string_view path,
const Args& query_args);
95std::string
MakeUrl(std::string_view path,
const std::unordered_map<std::string, std::string>& query_args);
103std::string
MakeUrl(std::string_view path,
const Args& query_args, MultiArgs query_multiargs);
111 std::string_view path,
112 std::initializer_list<std::pair<std::string_view, std::string_view>> query_args
120 std::string_view path,
121 const std::vector<std::pair<std::string_view, std::string_view>>& query_args
139 std::string_view path,
140 const PathArgs& path_args,
141 const Args& query_args
151 std::string_view path,
152 const PathArgs& path_args,
153 const std::unordered_map<std::string, std::string>& query_args
164 std::string_view path,
165 const PathArgs& path_args,
166 const Args& query_args,
167 MultiArgs query_multiargs
177 std::string_view path,
178 const PathArgs& path_args,
179 std::initializer_list<std::pair<std::string_view, std::string_view>> query_args
187std::string_view ExtractMetaTypeFromUrlView(std::string_view url);
195std::string_view ExtractPathView(std::string_view url);
208std::string_view ExtractHostnameView(std::string_view url);
215std::string_view ExtractSchemeView(std::string_view url);
222std::string_view ExtractQueryView(std::string_view url);
229std::string_view ExtractFragmentView(std::string_view url);
237std::string UrlDecode(
utils::impl::InternalTag, std::string_view range);