summaryrefslogtreecommitdiff
path: root/lib/httpserver/HTTPRequest.h
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2009-01-04 13:56:55 +0000
committerChris Wilson <chris+github@qwirx.com>2009-01-04 13:56:55 +0000
commit95f5a1c2dff53b88c274e358bd0cd07758819a12 (patch)
tree66745b869b2a7b039eca307fe3ed3b9074278302 /lib/httpserver/HTTPRequest.h
parent0d1fc68db7b50c86b6eb3f635399af66ba54bd05 (diff)
Allow adding headers to an HTTPRequest.
Allow getting response headers out of HTTPResponse. Rename HTTPRequest Read and Write methods to Send and Receive, to avoid confusion with IOStream.
Diffstat (limited to 'lib/httpserver/HTTPRequest.h')
-rw-r--r--lib/httpserver/HTTPRequest.h23
1 files changed, 18 insertions, 5 deletions
diff --git a/lib/httpserver/HTTPRequest.h b/lib/httpserver/HTTPRequest.h
index 501bce53..dc81d593 100644
--- a/lib/httpserver/HTTPRequest.h
+++ b/lib/httpserver/HTTPRequest.h
@@ -44,9 +44,8 @@ private:
HTTPRequest(const HTTPRequest &);
HTTPRequest &operator=(const HTTPRequest &);
public:
-
typedef std::multimap<std::string, std::string> Query_t;
- typedef std::pair<std::string, std::string> QueryEn_t;
+ typedef std::pair<std::string, std::string> QueryEn_t, Header;
enum
{
@@ -56,8 +55,8 @@ public:
HTTPVersion_1_1 = 1001
};
- bool Read(IOStreamGetLine &rGetLine, int Timeout);
- bool Write(IOStream &rStream, int Timeout);
+ bool Receive(IOStreamGetLine &rGetLine, int Timeout);
+ bool Send(IOStream &rStream, int Timeout);
typedef std::map<std::string, std::string> CookieJar_t;
@@ -71,7 +70,15 @@ public:
// --------------------------------------------------------------------------
enum Method GetMethod() const {return mMethod;}
const std::string &GetRequestURI() const {return mRequestURI;}
- const std::string &GetHostName() const {return mHostName;} // note: request does splitting of Host: header
+
+ // Note: the HTTPRequest generates and parses the Host: header
+ // Do not attempt to set one yourself with AddHeader().
+ const std::string &GetHostName() const {return mHostName;}
+ void SetHostName(const std::string& rHostName)
+ {
+ mHostName = rHostName;
+ }
+
const int GetHostPort() const {return mHostPort;} // into host name and port number
const std::string &GetQueryString() const {return mQueryString;}
int GetHTTPVersion() const {return mHTTPVersion;}
@@ -98,6 +105,11 @@ public:
mClientKeepAliveRequested = keepAlive;
}
+ void AddHeader(const std::string& rName, const std::string& rValue)
+ {
+ mExtraHeaders.push_back(Header(rName, rValue));
+ }
+
private:
void ParseHeaders(IOStreamGetLine &rGetLine, int Timeout);
void ParseCookies(const std::string &rHeader, int DataStarts);
@@ -114,6 +126,7 @@ private:
std::string mContentType;
CookieJar_t *mpCookies;
bool mClientKeepAliveRequested;
+ std::vector<Header> mExtraHeaders;
};
#endif // HTTPREQUEST__H