X-Git-Url: https://git.llucax.com/z.facultad/75.42/plaqui.git/blobdiff_plain/1b53a979e1de9034a9755955ea22cd40ed138f23..fb2d20d28eedbd1b0a98c05a03da5643924d04f9:/Server/include/plaqui/server/httpresponse.h?ds=sidebyside diff --git a/Server/include/plaqui/server/httpresponse.h b/Server/include/plaqui/server/httpresponse.h index f5c0afd..09ff21d 100644 --- a/Server/include/plaqui/server/httpresponse.h +++ b/Server/include/plaqui/server/httpresponse.h @@ -28,7 +28,9 @@ #ifndef PLAQUI_HTTPRESPONSE_H #define PLAQUI_HTTPRESPONSE_H -#include "httpmessage.h" +#include "plaqui/server/httperror.h" +#include "plaqui/server/httpmessage.h" +#include #include namespace PlaQui { @@ -38,9 +40,23 @@ namespace Server { /// 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; @@ -48,6 +64,7 @@ namespace Server { /// Descripción del código (razón). std::string reason; + ///////////////////////////////////////////////////////////////////// // Métodos. public: @@ -60,19 +77,18 @@ namespace Server { /** * 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. @@ -85,13 +101,14 @@ namespace Server { * 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); };