4 #include <initializer_list> 12 #include <boost/algorithm/string/trim_all.hpp> 23 Cookies(
const std::initializer_list<std::pair<const std::string, std::string>>& pairs)
25 Cookies(
const std::map<std::string, std::string>& map) : map_{map} {}
27 std::string& operator[](
const std::string& key) {
return map_[key]; }
29 std::string GetEncoded()
const {
30 std::stringstream stream;
31 for (
const auto& item : map_) {
32 stream << xxhr::util::urlEncode(item.first) <<
"=";
35 if (!item.second.empty() && item.second.front() ==
'"' && item.second.back() ==
'"') {
36 stream << item.second;
38 stream << xxhr::util::urlEncode(item.second);
45 inline void parse_cookie_string(
const std::string& cookie_str) {
46 using namespace boost::algorithm;
48 std::regex cookies_rx(
";");
49 std::vector<std::string> cookies(
50 std::sregex_token_iterator(
51 cookie_str.begin(), cookie_str.end(), cookies_rx, -1),
52 std::sregex_token_iterator()
55 for (
auto& cookie : cookies) {
56 std::regex rx_cookie(
"([^=]+)=([^;]+)");
58 std::regex_match(cookie, match, rx_cookie);
59 map_.insert(std::make_pair(trim_all_copy(match[1].str()), match[2].str()));
64 std::map<std::string, std::string> map_;
67 decltype(map_) all()
const {
return map_; }
main library namespace
Definition: api.hpp:19