parameters.hpp
1 #ifndef XXHR_PARAMETERS_H
2 #define XXHR_PARAMETERS_H
3 
4 #include <initializer_list>
5 #include <memory>
6 #include <string>
7 
8 #include "util.hpp"
9 
10 #include "defines.hpp"
11 
12 namespace xxhr {
13 
14 struct Parameter {
15  template <typename KeyType, typename ValueType>
16  Parameter(KeyType&& key, ValueType&& value)
17  : key{XXHR_FWD(key)}, value{XXHR_FWD(value)} {}
18 
19  std::string key;
20  std::string value;
21 };
22 
29 class Parameters {
30  public:
31  Parameters() = default;
32  Parameters(const std::initializer_list<Parameter>& parameters) {
33  for (const auto& parameter : parameters) {
34  this->insert(parameter);
35  }
36  }
37 
39  void insert(const Parameter& parameter) {
40  if (!content.empty()) {
41  content += "&";
42  }
43 
44  auto escapedKey = xxhr::util::urlEncode(parameter.key);
45  if (parameter.value.empty()) {
46  content += escapedKey;
47  } else {
48  auto escapedValue = xxhr::util::urlEncode(parameter.value);
49  content += escapedKey + "=" + escapedValue;
50  }
51  }
52 
53 
54  std::string content;
55 };
56 
57 } // namespace xxhr
58 
59 #endif
xxhr::Parameters::insert
void insert(const Parameter &parameter)
adds another parameter
Definition: parameters.hpp:39
xxhr::Parameters
Allows passing an initializer list of named HTTP Parameters that will be URL Encoded within the reque...
Definition: parameters.hpp:29
xxhr
main library namespace
Definition: api.hpp:20