src/HTTPServer.cpp
branchv_0
changeset 8 90990c8b6aef
parent 5 121981e6bd54
child 9 36479a47faa8
--- a/src/HTTPServer.cpp	Thu Apr 21 00:43:54 2022 +0200
+++ b/src/HTTPServer.cpp	Sat Apr 30 02:49:50 2022 +0200
@@ -59,12 +59,33 @@
 
 			// TODO: return also client IP address etc.
 			// const MHD_ConnectionInfo* connetionInfo = MHD_get_connection_info(connection, MHD_ConnectionInfoType::MHD_CONNECTION_INFO_CLIENT_ADDRESS);
-
+			
 			// FIXME: request.body = ...
 			// FIXME: multiple calls for one request
+			// FIXME: POST parameters
+			
+			// HTTP headers:
+			MHD_get_connection_values(connection, MHD_ValueKind::MHD_HEADER_KIND, [](void* cls, MHD_ValueKind kind, const char* key, const char* value) {
+				(static_cast<std::vector<AVP>*> (cls))->push_back({key, value});
+				return MHD_YES;
+			}, &request.header);
+
+			// GET parameters:
+			MHD_get_connection_values(connection, MHD_ValueKind::MHD_GET_ARGUMENT_KIND, [](void* cls, MHD_ValueKind kind, const char* key, const char* value) {
+				(static_cast<std::vector<AVP>*> (cls))->push_back({key, value});
+				return MHD_YES;
+			}, &request.getParameter);
+
+			// COOKIE parameters:
+			MHD_get_connection_values(connection, MHD_ValueKind::MHD_COOKIE_KIND, [](void* cls, MHD_ValueKind kind, const char* key, const char* value) {
+				(static_cast<std::vector<AVP>*> (cls))->push_back({key, value});
+				return MHD_YES;
+			}, &request.cookie);
+
 			const HTTPServer::Response response = impl->requestHandler->handle(request);
 			struct MHD_Response* mhdResponse = MHD_create_response_from_buffer(response.body.size(), (void*) response.body.c_str(), MHD_RESPMEM_MUST_COPY);
-			for (Header h : response.header) MHD_add_response_header(mhdResponse, h.name.c_str(), h.value.c_str());
+			for (AVP h : response.header) MHD_add_response_header(mhdResponse, h.name.c_str(), h.value.c_str());
+			// FIXME: cookies: for (AVP c : response.cookie) ...
 			MHD_queue_response(connection, response.code, mhdResponse);
 			MHD_destroy_response(mhdResponse);
 			return MHD_YES;