#ifndef PLAQUI_HTTPMESSAGE_H
#define PLAQUI_HTTPMESSAGE_H
+#include "plaqui/server/httpheaders.h"
#include <string>
namespace PlaQui {
/// Pedido HTTP.
class HTTPMessage {
+ // Constantes.
+
+ public:
+
+ /// \todo TODO completar codigos.
+ static const unsigned OK = 200;
+ static const unsigned BAD_REQUEST = 401;
+ static const unsigned NOT_FOUND = 404;
+ static const unsigned CONFLICT = 409;
+ static const unsigned LENGTH_REQUIRED = 411;
+ static const unsigned INTERNAL_SERVER_ERROR = 500;
+ static const unsigned NOT_IMPLEMENTED = 501;
+ static const unsigned HTTP_VERSION_NOT_SUPPORTED = 505;
+
// Atributos.
- protected:
+ private:
+
+ /// Cuerpo del mensaje.
+ std::string body;
+
+ protected: // TODO hacer privados con get() y set() ???
+
+ public:
/// Version HTTP.
std::string version;
/// Cabeceras HTTP.
HTTPHeaders headers;
- /// Cuerpo del mensaje.
- std::string body;
-
// Métodos.
public:
/**
* Constructor.
*/
- HTTPMessage(const std::string& http_version = "1.1");
+ //HTTPMessage(const std::string& http_version = "1.1");
/**
* Constructor.
*/
- HTTPMessage(const std::string& body,
- const std::string& http_version = "1.1");
+ HTTPMessage(const std::string& _body = "",
+ const std::string& _version = "1.1");
+
+ /**
+ * Obtiene el cuerpo del mensaje.
+ */
+ const std::string& get_body(void) const;
+
+ /**
+ * Establece el cuerpo del mensaje.
+ *
+ * \param _body Cuerpo del mensaje.
+ */
+ void set_body(const std::string& _body);
/**
* Obtiene los datos del pedido HTTP desde un texto.
*/
- friend std::istream& operator>>(std::istream& is,
- const HTTPMessage& m);
+ friend std::istream& operator>>(std::istream& is, HTTPMessage& m);
/**
* Convierte el pedido HTTP en texto.
friend std::ostream& operator<<(std::ostream& os,
const HTTPMessage& m);
+ /**
+ * Obtiene la razón según un código.
+ *
+ * \param code Código de estado.
+ */
+ static std::string reason(unsigned code);
+
};
}