#ifndef MSP_HTTP_MESSAGE_H_
#define MSP_HTTP_MESSAGE_H_
+#include <map>
#include <string>
-#include "misc.h"
+#include <msp/core/variant.h>
+#include "version.h"
namespace Msp {
namespace Http {
class Message
{
-public:
- virtual ~Message() { }
-
- void set_header(const std::string &, const std::string &);
- const std::string &get_header(const std::string &) const;
- const std::string &get_data() const { return data; }
- bool get_complete() const { return complete; }
- void add_data(const std::string &);
- unsigned parse_data(const std::string &);
- virtual std::string str() const =0;
protected:
+ typedef std::map<std::string, std::string> HeaderMap;
+
Version http_version;
HeaderMap headers;
- std::string data;
+ std::string content;
unsigned chunk_length;
bool complete;
+ Variant user_data;
Message();
+public:
+ virtual ~Message() { }
+
+ void set_header(const std::string &, const std::string &);
+ const std::string &get_header(const std::string &) const;
+ void add_content(const std::string &);
+ const std::string &get_content() const { return content; }
+ void set_user_data(const Variant &);
+ const Variant &get_user_data() const { return user_data; }
+ bool is_complete() const { return complete; }
+ unsigned parse_content(const std::string &);
+ virtual std::string str() const =0;
+protected:
+ unsigned parse_headers(const std::string &);
std::string str_common() const;
+ std::string normalize_header_name(const std::string &) const;
};
} // namespace Http