11#include <unordered_map>
13#include <userver/utils/impl/internal_tag_fwd.hpp>
14#include <userver/utils/str_icase.hpp>
16USERVER_NAMESPACE_BEGIN
21[[
deprecated(
"Use a more strict http::parser::UrlDecode instead")]] std::string
UrlDecode(std::string_view range);
30std::string
UrlEncode(std::string_view input_string);
32using Args = std::unordered_map<std::string, std::string,
utils::
StrCaseHash>;
33using MultiArgs = std::multimap<std::string, std::string>;
34using PathArgs = std::unordered_map<std::string, std::string>;
62std::string
MakeQuery(
const std::unordered_map<std::string, std::string>& query_args);
71std::string
MakeQuery(std::initializer_list<std::pair<std::string_view, std::string_view>> query_args);
81std::string
MakeUrl(std::string_view path,
const Args& query_args);
91std::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);
114MakeUrl(std::string_view path, std::initializer_list<std::pair<std::string_view, std::string_view>> query_args);
138std::optional<std::string>
153 std::string_view path,
154 const PathArgs& path_args,
155 const std::unordered_map<std::string, std::string>& query_args
173 std::string_view path,
174 const PathArgs& path_args,
175 const Args& query_args,
176 MultiArgs query_multiargs
191 std::string_view path,
192 const PathArgs& path_args,
193 std::initializer_list<std::pair<std::string_view, std::string_view>> query_args
231std::string UrlDecode(
utils::impl::InternalTag, std::string_view range);