X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fio%2FHTTPRequest.hxx;h=0c6e2685c6f1df956d95d1bf2388600b27c5ea8c;hb=201cb61f842ef50a19438e3872ba22e588fa1afc;hp=1c7dc083b06b8c0e8f3b758144f53d08e5108a83;hpb=115531e944f51c3295f69f3ed361bf421515cc58;p=simgear.git diff --git a/simgear/io/HTTPRequest.hxx b/simgear/io/HTTPRequest.hxx index 1c7dc083..0c6e2685 100644 --- a/simgear/io/HTTPRequest.hxx +++ b/simgear/io/HTTPRequest.hxx @@ -30,6 +30,7 @@ public: virtual std::string host() const; virtual std::string hostAndPort() const; virtual unsigned short port() const; + virtual std::string query() const; virtual string_list requestHeaders() const; virtual std::string header(const std::string& name) const; @@ -42,7 +43,25 @@ public: void setResponseLength(unsigned int l); virtual unsigned int responseLength() const; + + /** + * Query the size of the request body. -1 (the default value) means no + * request body + */ + virtual int requestBodyLength() const; + /** + * Retrieve the body data bytes. Will be passed the maximum body bytes + * to return in the buffer, and should update count with the actual number + * of bytes written. + */ + virtual void getBodyData(char* s, int& count) const; + + /** + * retrieve the request body content type. Default is text/plain + */ + virtual std::string requestBodyType() const; + /** * running total of body bytes received so far. Can be used * to generate a completion percentage, if the response length is @@ -50,6 +69,20 @@ public: */ unsigned int responseBytesReceived() const { return _receivedBodyBytes; } + + enum HTTPVersion { + HTTP_VERSION_UNKNOWN = 0, + HTTP_0_x, // 0.9 or similar + HTTP_1_0, + HTTP_1_1 + }; + + HTTPVersion responseVersion() const + { return _responseVersion; } + + static HTTPVersion decodeVersion(const std::string& v); + + bool closeAfterComplete() const; protected: Request(const std::string& url, const std::string method = "GET"); @@ -68,10 +101,12 @@ private: std::string _method; std::string _url; + HTTPVersion _responseVersion; int _responseStatus; std::string _responseReason; unsigned int _responseLength; unsigned int _receivedBodyBytes; + bool _willClose; typedef std::map HeaderDict; HeaderDict _responseHeaders;