#ifndef HTTPRequest_h
#define HTTPRequest_h
#include <WebCore/HTTPHeaderMap.h>
#include <WebCore/HTTPParsers.h>
#include <WebCore/URL.h>
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/text/WTFString.h>
namespace WebKit {
class HTTPRequest : public RefCounted<HTTPRequest> {
public:
static PassRefPtr<HTTPRequest> create() { return adoptRef(new HTTPRequest()); }
static PassRefPtr<HTTPRequest> create(const String& requestMethod, const WebCore::URL& url, WebCore::HTTPVersion version) { return adoptRef(new HTTPRequest(requestMethod, url, version)); }
static PassRefPtr<HTTPRequest> parseHTTPRequestFromBuffer(const char* data, size_t length, String& failureReason);
virtual ~HTTPRequest();
String requestMethod() const { return m_requestMethod; }
void setRequestMethod(const String& method) { m_requestMethod = method; }
WebCore::URL url() const { return m_url; }
void setURL(const WebCore::URL& url) { m_url = url; }
const Vector<unsigned char>& body() const { return m_body; }
const WebCore::HTTPHeaderMap& headerFields() const { return m_headerFields; }
void addHeaderField(const AtomicString& name, const String& value) { m_headerFields.add(name, value); }
void addHeaderField(const char* name, const String& value) { m_headerFields.add(name, value); }
protected:
HTTPRequest();
HTTPRequest(const String& requestMethod, const WebCore::URL&, WebCore::HTTPVersion);
size_t parseRequestLine(const char* data, size_t length, String& failureReason);
size_t parseHeaders(const char* data, size_t length, String& failureReason);
size_t parseRequestBody(const char* data, size_t length);
WebCore::URL m_url;
WebCore::HTTPVersion m_httpVersion;
String m_requestMethod;
WebCore::HTTPHeaderMap m_headerFields;
Vector<unsigned char> m_body;
};
}
#endif // HTTPRequest_h