/* */ #ifndef D_HTTP_HEADER_H #define D_HTTP_HEADER_H #include "common.h" #include #include #include #include #include "SharedHandle.h" namespace aria2 { class Range; class HttpHeader { private: std::multimap table_; // HTTP status code, e.g. 200 int statusCode_; // HTTP version, e.g. HTTP/1.1 std::string version_; // HTTP Method, e.g. GET, POST, etc std::string method_; // Request Path std::string requestPath_; public: HttpHeader(); ~HttpHeader(); void put(const std::string& name, const std::string& value); bool defined(const std::string& name) const; const std::string& getFirst(const std::string& name) const; std::vector get(const std::string& name) const; std::pair::const_iterator, std::multimap::const_iterator> getIterator(const std::string& name) const; unsigned int getFirstAsUInt(const std::string& name) const; uint64_t getFirstAsULLInt(const std::string& name) const; SharedHandle getRange() const; int getStatusCode() const { return statusCode_; } void setStatusCode(int code) { statusCode_ = code; } const std::string& getVersion() const { return version_; } void setVersion(const std::string& version); const std::string& getMethod() const { return method_; } void setMethod(const std::string& method); const std::string& getRequestPath() const { return requestPath_; } void setRequestPath(const std::string& requestPath); void fill(std::istream& in); // Clears table_. responseStatus_ and version_ are unchanged. void clearField(); static const std::string LOCATION; static const std::string TRANSFER_ENCODING; static const std::string CONTENT_ENCODING; static const std::string CONTENT_DISPOSITION; static const std::string SET_COOKIE; static const std::string CONTENT_TYPE; static const std::string RETRY_AFTER; static const std::string CONNECTION; static const std::string CONTENT_LENGTH; static const std::string CONTENT_RANGE; static const std::string LAST_MODIFIED; static const std::string ACCEPT_ENCODING; static const std::string LINK; static const std::string DIGEST; static const char HTTP_1_1[]; static const char CLOSE[]; static const char CHUNKED[]; static const char GZIP[]; static const char DEFLATE[]; }; typedef SharedHandle HttpHeaderHandle; } // namespace std; #endif // D_HTTP_HEADER_H