diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-08 23:29:21 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-10-08 23:29:21 +0000 |
commit | 7e843c22e16c81054bad18073d24fe1a07026431 (patch) | |
tree | 44ca0213c7d7a80270b993fec1fbed275ec56424 /src/modules/httpd.h | |
parent | c440038736f749a56dbac1badee5b2f099286117 (diff) |
Update Event and Request APIs
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11808 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/httpd.h')
-rw-r--r-- | src/modules/httpd.h | 53 |
1 files changed, 12 insertions, 41 deletions
diff --git a/src/modules/httpd.h b/src/modules/httpd.h index f40050e36..483009095 100644 --- a/src/modules/httpd.h +++ b/src/modules/httpd.h @@ -94,11 +94,11 @@ class HTTPHeaders : public classbase } }; +class HttpServerSocket; + /** This class represents a HTTP request. - * It will be sent to all modules as the data section of - * an Event. */ -class HTTPRequest : public classbase +class HTTPRequest : public Event { protected: std::string type; @@ -114,7 +114,7 @@ class HTTPRequest : public classbase /** A socket pointer, which you must return in your HTTPDocument class * if you reply to this request. */ - void* sock; + HttpServerSocket* sock; /** Initialize HTTPRequest. * This constructor is called by m_httpd.so to initialize the class. @@ -125,8 +125,9 @@ class HTTPRequest : public classbase * @param ip The IP address making the web request. * @param pdata The post data (content after headers) received with the request, up to Content-Length in size */ - HTTPRequest(const std::string &request_type, const std::string &uri, HTTPHeaders* hdr, void* opaque, const std::string &ip, const std::string &pdata) - : type(request_type), document(uri), ipaddr(ip), postdata(pdata), headers(hdr), sock(opaque) + HTTPRequest(Module* me, const std::string &eventid, const std::string &request_type, const std::string &uri, + HTTPHeaders* hdr, HttpServerSocket* socket, const std::string &ip, const std::string &pdata) + : Event(me, eventid), type(request_type), document(uri), ipaddr(ip), postdata(pdata), headers(hdr), sock(socket) { } @@ -171,20 +172,13 @@ class HTTPRequest : public classbase * When you initialize this class you may initialize it with all components required to * form a valid HTTP response, including document data, headers, and a response code. */ -class HTTPDocument : public classbase +class HTTPDocumentResponse : public Request { - protected: - + public: std::stringstream* document; int responsecode; - - public: - HTTPHeaders headers; - - /** The socket pointer from an earlier HTTPRequest - */ - void* sock; + HTTPRequest& src; /** Initialize a HTTPRequest ready for sending to m_httpd.so. * @param opaque The socket pointer you obtained from the HTTPRequest at an earlier time @@ -193,32 +187,9 @@ class HTTPDocument : public classbase * based upon the response code. * @param extra Any extra headers to include with the defaults, seperated by carriage return and linefeed. */ - HTTPDocument(void* opaque, std::stringstream* doc, int response) : document(doc), responsecode(response), sock(opaque) - { - } - - /** Get the document text. - * @return The document text - */ - std::stringstream* GetDocument() - { - return this->document; - } - - /** Get the document size. - * @return the size of the document text in bytes - */ - unsigned long GetDocumentSize() - { - return this->document->str().length(); - } - - /** Get the response code. - * @return The response code - */ - int GetResponseCode() + HTTPDocumentResponse(Module* me, HTTPRequest& req, std::stringstream* doc, int response) + : Request(me, req.source, "HTTP-DOC"), document(doc), responsecode(response), src(req) { - return this->responsecode; } }; |