From 58447b8170f917d37fe8669438e213cda8c2897d Mon Sep 17 00:00:00 2001 From: Steffen Pohle Date: Fri, 17 Apr 2026 17:37:00 +0200 Subject: [PATCH] adding function to request a certain http header --- Changelog | 3 +++ UDPTCPNetwork-webutils.h | 2 ++ test-webserver.cc | 11 ++++++++++- webutils.cc | 20 ++++++++++++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/Changelog b/Changelog index 0a84c77..591651b 100644 --- a/Changelog +++ b/Changelog @@ -1,5 +1,8 @@ Version 0.4: ============= +2026-04-17: +- adding function to request a certain headline + 2026-04-16: - base64encode and base64decode implemented diff --git a/UDPTCPNetwork-webutils.h b/UDPTCPNetwork-webutils.h index 5c23bbe..0b8d1ab 100644 --- a/UDPTCPNetwork-webutils.h +++ b/UDPTCPNetwork-webutils.h @@ -60,6 +60,8 @@ class WebRequestBuffer { std::string GetProtocolVersion() { return protocol_version; }; int GetRequestCmdObj(std::string *cmd, std::string *obj, JSONParse *jp); std::string GetCookie(std::string name); + std::string GetHeader(std::string name); + std::list GetHeaders(); }; diff --git a/test-webserver.cc b/test-webserver.cc index 565f918..fe982c2 100644 --- a/test-webserver.cc +++ b/test-webserver.cc @@ -28,11 +28,20 @@ class SimpleWebServer : public WebServer { int SimpleWebServer::HandleRequest (WebRequestBuffer *requestbuffer, WebServerClient *webclient) { - if (requestbuffer == NULL || webclient == NULL) return 0; + if (requestbuffer == NULL || webclient == NULL) return 0; std::string request = requestbuffer->GetRequest(); printf ("SimpleWebServerClient::HandleRequest() Request:%s\n", request.c_str()); + debug ("Recived Headers"); + std::list hl; + std::list::iterator il; + std::string s; + hl = requestbuffer->GetHeaders(); + for (il = hl.begin(); il != hl.end(); il++) { + debug ("'%s' -> '%s' ", il->parameter.c_str(), requestbuffer->GetHeader(il->parameter).c_str()); + } + if (request.compare ("/") == 0) request = "/index.html"; if (request.find("/big.html") != std::string::npos) { std::string htmlfile = GenerateBigHtmlFile(8*1024*1024); diff --git a/webutils.cc b/webutils.cc index eaf25d7..4650fb9 100644 --- a/webutils.cc +++ b/webutils.cc @@ -212,3 +212,23 @@ std::string WebRequestBuffer::GetCookie(std::string name) { }; +std::string WebRequestBuffer::GetHeader(std::string name) { + std::list::iterator il; + std::size_t i; + std::string s; + + // + // search for coockie line + for (il = headerlines.begin(); il != headerlines.end(); il++) { + if ((string_to_lower(il->parameter).compare(string_to_lower(name)) == 0) || + (string_to_lower(il->parameter).compare(string_to_lower(name) + ':') == 0)) { + return il->value; + } + } + return ""; +}; + + +std::list WebRequestBuffer::GetHeaders() { + return headerlines; +};