summaryrefslogtreecommitdiffhomepage
path: root/NetEx/HttpRequest.h
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2022-03-29 22:40:57 +0200
committerAki <please@ignore.pl>2022-03-29 22:40:57 +0200
commit6204e62c69c1a05d3beddd0c7397b3f54e576d74 (patch)
tree6dfc5ef3c017942fd1a9d980893fe1c0c0ebd427 /NetEx/HttpRequest.h
parented2b908b7d88bcb5730ef74ae97020b683da51ae (diff)
downloadstarshatter-6204e62c69c1a05d3beddd0c7397b3f54e576d74.zip
starshatter-6204e62c69c1a05d3beddd0c7397b3f54e576d74.tar.gz
starshatter-6204e62c69c1a05d3beddd0c7397b3f54e576d74.tar.bz2
Split Param, Response and Request from HttpServer files
Diffstat (limited to 'NetEx/HttpRequest.h')
-rw-r--r--NetEx/HttpRequest.h76
1 files changed, 76 insertions, 0 deletions
diff --git a/NetEx/HttpRequest.h b/NetEx/HttpRequest.h
new file mode 100644
index 0000000..10bfc77
--- /dev/null
+++ b/NetEx/HttpRequest.h
@@ -0,0 +1,76 @@
+/* Starshatter: The Open Source Project
+ Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors
+ Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
+ Copyright (c) 1997-2006, Destroyer Studios LLC.
+*/
+
+#ifndef HttpRequest_h
+#define HttpRequest_h
+
+#include "HttpParam.h"
+#include "List.h"
+#include "NetAddr.h"
+
+
+class HttpRequest
+{
+public:
+ static const char* TYPENAME() { return "HttpRequest"; }
+
+ enum METHOD {
+ HTTP_OPTIONS,
+ HTTP_GET,
+ HTTP_HEAD,
+ HTTP_POST,
+ HTTP_PUT,
+ HTTP_DELETE,
+ HTTP_TRACE,
+ HTTP_CONNECT
+ };
+
+ HttpRequest(const char* request=nullptr);
+ ~HttpRequest();
+
+ operator Text();
+
+ void ParseRequest(Text request);
+ void ParseCookie(const char* param);
+
+ int Method() const { return method; }
+ Text URI() const { return uri; }
+ Text Content() const { return content; }
+ Text RequestLine() const { return request_line; }
+
+ List<HttpParam>& GetQuery() { return query; }
+ List<HttpParam>& GetHeaders() { return headers; }
+ List<HttpParam>& GetCookies() { return cookies; }
+
+ NetAddr GetClientAddr() const { return client_addr; }
+ void SetClientAddr(const NetAddr& a) { client_addr = a; }
+
+ Text GetParam(const char* name);
+
+ Text GetHeader(const char* name);
+ void SetHeader(const char* name, const char* value);
+ void AddHeader(const char* name, const char* value);
+ Text GetCookie(const char* name);
+ void SetCookie(const char* name, const char* value);
+ void AddCookie(const char* name, const char* value);
+
+ Text DecodeParam(const char* value);
+ static Text EncodeParam(const char* value);
+
+private:
+ int method;
+ Text uri;
+ Text content;
+ Text request_line;
+ NetAddr client_addr;
+
+ List<HttpParam> query;
+ List<HttpParam> headers;
+ List<HttpParam> cookies;
+};
+
+
+#endif // HttpRequest_h