00001
00014
00016
00017 #ifndef NET_INSTAWEB_HTTP_PUBLIC_REQUEST_HEADERS_H_
00018 #define NET_INSTAWEB_HTTP_PUBLIC_REQUEST_HEADERS_H_
00019
00020 #include "net/instaweb/util/public/basictypes.h"
00021 #include "net/instaweb/http/public/headers.h"
00022 #include "net/instaweb/util/public/string.h"
00023 #include "net/instaweb/util/public/string_util.h"
00024
00025 namespace net_instaweb {
00026
00027 class HttpRequestHeaders;
00028 class MessageHandler;
00029 class Writer;
00030
00032 class RequestHeaders : public Headers<HttpRequestHeaders> {
00033 public:
00034 enum Method { kOptions, kGet, kHead, kPost, kPut, kDelete, kTrace, kConnect,
00035 kPatch, kError };
00036
00037 RequestHeaders();
00038
00039 void Clear();
00040 void CopyFrom(const RequestHeaders& other);
00041
00042 GoogleString ToString() const;
00043 Method method() const;
00044 const char* method_string() const;
00045 void set_method(Method method);
00046
00050 const GoogleString& message_body() const;
00051 void set_message_body(const GoogleString& data);
00052
00053 using Headers<HttpRequestHeaders>::WriteAsHttp;
00054 bool WriteAsHttp(const StringPiece& url, Writer* writer,
00055 MessageHandler* handler) const;
00056
00058 bool AcceptsGzip() const;
00059
00060 private:
00061 DISALLOW_COPY_AND_ASSIGN(RequestHeaders);
00062 };
00063
00064 }
00065
00066 #endif ///< NET_INSTAWEB_HTTP_PUBLIC_REQUEST_HEADERS_H_