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);
123MakeUrl(std::string_view path, std::initializer_list<std::pair<std::string_view, std::string_view>> query_args);
130MakeUrl(std::string_view path,
const std::vector<std::pair<std::string_view, std::string_view>>& query_args);
154std::optional<std::string>
169 std::string_view path,
170 const PathArgs& path_args,
171 const std::unordered_map<std::string, std::string>& query_args
189 std::string_view path,
190 const PathArgs& path_args,
191 const Args& query_args,
192 MultiArgs query_multiargs
207 std::string_view path,
208 const PathArgs& path_args,
209 std::initializer_list<std::pair<std::string_view, std::string_view>> query_args
220std::string_view ExtractMetaTypeFromUrlView(std::string_view url);
233std::string_view ExtractPathView(std::string_view url);
258std::string_view ExtractHostnameView(std::string_view url);
272std::string_view ExtractSchemeView(std::string_view url);
286std::string_view ExtractQueryView(std::string_view url);
302std::string_view ExtractFragmentView(std::string_view url);
310std::string UrlDecode(
utils::impl::InternalTag, std::string_view range);