Ada 3.4.0
Fast spec-compliant URL parser
Loading...
Searching...
No Matches
url_search_params.h
Go to the documentation of this file.
1
11#ifndef ADA_URL_SEARCH_PARAMS_H
12#define ADA_URL_SEARCH_PARAMS_H
13
14#include <optional>
15#include <string>
16#include <string_view>
17#include <vector>
18
19namespace ada {
20
29
30template <typename T, url_search_params_iter_type Type>
31struct url_search_params_iter;
32
34typedef std::pair<std::string_view, std::string_view> key_value_view_pair;
35
41 url_search_params_iter<std::string_view,
47
61 url_search_params() = default;
62
67 explicit url_search_params(const std::string_view input) {
68 initialize(input);
69 }
70
72 url_search_params(url_search_params &&u) noexcept = default;
75 ~url_search_params() = default;
76
81 [[nodiscard]] inline size_t size() const noexcept;
82
89 inline void append(std::string_view key, std::string_view value);
90
96 inline void remove(std::string_view key);
97
103 inline void remove(std::string_view key, std::string_view value);
104
111 inline std::optional<std::string_view> get(std::string_view key);
112
119 inline std::vector<std::string> get_all(std::string_view key);
120
127 inline bool has(std::string_view key) noexcept;
128
135 inline bool has(std::string_view key, std::string_view value) noexcept;
136
143 inline void set(std::string_view key, std::string_view value);
144
149 inline void sort();
150
156 inline std::string to_string() const;
157
165
172
179
184 inline auto begin() const { return params.begin(); }
185 inline auto end() const { return params.end(); }
186 inline auto front() const { return params.front(); }
187 inline auto back() const { return params.back(); }
188 inline auto operator[](size_t index) const { return params[index]; }
189
196 void reset(std::string_view input);
197
198 private:
199 typedef std::pair<std::string, std::string> key_value_pair;
200 std::vector<key_value_pair> params{};
201
206 void initialize(std::string_view init);
207
208 template <typename T, url_search_params_iter_type Type>
210}; // url_search_params
211
223template <typename T, url_search_params_iter_type Type>
225 inline url_search_params_iter() : params(EMPTY) {}
229 default;
232
237 inline std::optional<T> next();
238
243 inline bool has_next() const;
244
245 private:
246 static url_search_params EMPTY;
247 inline url_search_params_iter(url_search_params &params_) : params(params_) {}
248
249 url_search_params &params;
250 size_t pos = 0;
251
252 friend struct url_search_params;
253};
254
255} // namespace ada
256#endif
Definition ada_idna.h:13
url_search_params_iter< std::string_view, url_search_params_iter_type::VALUES > url_search_params_values_iter
url_search_params_iter< key_value_view_pair, url_search_params_iter_type::ENTRIES > url_search_params_entries_iter
url_search_params_iter< std::string_view, url_search_params_iter_type::KEYS > url_search_params_keys_iter
url_search_params_iter_type
Iterator types for url_search_params iteration.
std::pair< std::string_view, std::string_view > key_value_view_pair
JavaScript-style iterator for url_search_params.
url_search_params_iter(const url_search_params_iter &u)=default
url_search_params_iter & operator=(url_search_params_iter &&u) noexcept=default
std::optional< T > next()
url_search_params_iter(url_search_params_iter &&u) noexcept=default
url_search_params_iter & operator=(const url_search_params_iter &u)=default
Class for parsing and manipulating URL query strings.
void set(std::string_view key, std::string_view value)
std::vector< std::string > get_all(std::string_view key)
void remove(std::string_view key)
url_search_params(const url_search_params &u)=default
url_search_params(url_search_params &&u) noexcept=default
friend struct url_search_params_iter
auto operator[](size_t index) const
url_search_params_entries_iter get_entries()
std::string to_string() const
url_search_params & operator=(url_search_params &&u) noexcept=default
url_search_params_keys_iter get_keys()
size_t size() const noexcept
url_search_params & operator=(const url_search_params &u)=default
void append(std::string_view key, std::string_view value)
url_search_params(const std::string_view input)
url_search_params_values_iter get_values()
~url_search_params()=default
std::optional< std::string_view > get(std::string_view key)
bool has(std::string_view key) noexcept