diff options
author | Aki <please@ignore.pl> | 2022-03-29 22:40:57 +0200 |
---|---|---|
committer | Aki <please@ignore.pl> | 2022-03-29 22:40:57 +0200 |
commit | 6204e62c69c1a05d3beddd0c7397b3f54e576d74 (patch) | |
tree | 6dfc5ef3c017942fd1a9d980893fe1c0c0ebd427 /NetEx/HttpRequest.h | |
parent | ed2b908b7d88bcb5730ef74ae97020b683da51ae (diff) | |
download | starshatter-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.h | 76 |
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 |