From: LeonardoBizzoni Date: Fri, 16 Aug 2024 18:02:11 +0000 (+0200) Subject: Added parameter table to `Request` X-Git-Url: http://git.leonardobizzoni.com/?a=commitdiff_plain;h=4aefb839001d4e307908f2bf3aeae6f3bbfbccb6;p=http-lib Added parameter table to `Request` --- diff --git a/src/request.cpp b/src/request.cpp index 9493653..ea57e22 100644 --- a/src/request.cpp +++ b/src/request.cpp @@ -20,6 +20,12 @@ std::ostream &operator<<(std::ostream &os, const http::Request &req) { os << header.first << " = " << header.second << ","; } + os << " ], parameters: ["; + + for (const auto ¶meter : req.parameters) { + os << parameter.first << " = " << parameter.second << ","; + } + os << " ] }"; return os; } @@ -58,7 +64,24 @@ namespace http { req.path = std::string((*query_view_iter).begin(), (*query_view_iter).end()); query_view_iter++; - req.query = std::string((*query_view_iter).begin(), (*query_view_iter).end()); + + auto query_param_view = + std::string_view((*query_view_iter).begin(), (*query_view_iter).end()) | + std::views::split(';'); + + auto query_param_view_iter = query_param_view.begin(); + while (query_param_view_iter != query_param_view.end()) { + auto param_view = + std::string_view((*query_param_view_iter).begin(), (*query_param_view_iter).end()) | + std::views::split('='); + auto param_view_iter = param_view.begin(); + + auto param_name = std::string((*param_view_iter).begin(), (*param_view_iter).end()); + param_view_iter++; + req.parameters[std::move(param_name)] = std::string((*param_view_iter).begin(), (*param_view_iter).end()); + + ++query_param_view_iter; + } } std::string_view version(*word_iter); diff --git a/src/request.h b/src/request.h index 2087327..c1cd6ae 100644 --- a/src/request.h +++ b/src/request.h @@ -26,6 +26,7 @@ namespace http { http_version version = {.major = 1, .minor = 1}; std::unordered_map optheaders = {}; + std::unordered_map parameters = {}; }; } // namespace http