]> git.leonardobizzoni.com Git - http-lib/commitdiff
Added parameter table to `Request`
authorLeonardoBizzoni <leo2002714@gmail.com>
Fri, 16 Aug 2024 18:02:11 +0000 (20:02 +0200)
committerLeonardoBizzoni <leo2002714@gmail.com>
Fri, 16 Aug 2024 18:02:11 +0000 (20:02 +0200)
src/request.cpp
src/request.h

index 94936532a6cbe570bf0272f4dd79abde58e0b8ca..ea57e2215a8271f49b5af5c85a4f16482cf63f33 100644 (file)
@@ -20,6 +20,12 @@ std::ostream &operator<<(std::ostream &os, const http::Request &req) {
     os << header.first << " = " << header.second << ",";
   }
 
+  os << " ], parameters: [";
+
+  for (const auto &parameter : 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);
index 2087327a1ae98325a560985ce4d629c0f0a22316..c1cd6aee8b9df82c03d83314bcfa54f49c9ae5f5 100644 (file)
@@ -26,6 +26,7 @@ namespace http {
     http_version version = {.major = 1, .minor = 1};
 
     std::unordered_map<std::string, std::string> optheaders = {};
+    std::unordered_map<std::string, std::string> parameters = {};
   };
 }  // namespace http