#ifndef PLAQUI_HTTPRESPONSE_H
#define PLAQUI_HTTPRESPONSE_H
-#include "httpmessage.h"
+#include "plaqui/server/httperror.h"
+#include "plaqui/server/httpmessage.h"
+#include <socket++/sockstream.h>
#include <string>
namespace PlaQui {
/// Respuesta HTTP.
class HTTPResponse: public HTTPMessage {
+ // Tipos.
+
+ public:
+
+ typedef enum {
+ INVALID_HTTP_RESPONSE,
+ INVALID_HTTP_VERSION,
+ INVALID_HTTP_RESPONSE_CODE,
+ MISSING_HTTP_RESPONSE_CODE
+ } Error;
+
// Atributos.
- protected:
+ //protected: FIXME - hacer privado con get/set?
+ public:
/// Código de estado.
unsigned status_code;
/**
* Constructor.
*/
- HTTPResponse(const std::string& version = "1.1");
+ HTTPResponse(const std::string& body = "",
+ const std::string& version = "1.1");
/**
* Constructor.
*/
- //HTTPResponse(const std::string& body,
- // const std::string& version = "1.1");
+ HTTPResponse(const HTTPError& error);
/**
* Constructor.
*/
- //HTTPResponse(unsigned status_code, const std::string& reason,
- // const std::string& version = "1.1");
+ HTTPResponse(unsigned status_code, const std::string& body = "");
/**
* Constructor.
* Obtiene los datos de la respuesta HTTP desde un texto.
*/
friend std::istream& operator>>(std::istream& is,
- HTTPResponse& resp);
+ HTTPResponse& resp)
+ throw(Error, sockerr, std::ios::failure);
/**
* Convierte la respuesta HTTP en texto.
*/
friend std::ostream& operator<<(std::ostream& os,
- const HTTPResponse& resp);
+ const HTTPResponse& resp) throw(sockerr);
};