diff --git a/src/Client/Response.cpp b/src/Client/Response.cpp index 2620833..f729122 100644 --- a/src/Client/Response.cpp +++ b/src/Client/Response.cpp @@ -5,6 +5,7 @@ Response::Response() { initErrorCode(); + _code = 200; } //-------------------------------------------------GET/SET--------------------------------------- @@ -21,6 +22,7 @@ std::string Response::getBody(void) void Response::setData(Request request, ServerConfig *config) { _request = request; + _code = request.getCode(); _config = config; } @@ -65,32 +67,48 @@ void Response::invalidClient(void) { std::stringstream ss; std::string tmp; - //Header - ss << _request.getVersion() << " " << _request.getCode() << " " << getReasonPhrase(_request.getCode()) << "\r\nContent-Type: text/html\r\n\r\n"; - _header = ss.str(); //body - _body = getErrorPage(_request.getCode()); - std::cout << RED << "Invalid Client method called\nCODE: " << _request.getCode() << " " << getReasonPhrase(_request.getCode()) << ZERO_C << std::endl; - std::cout << _header << std::endl << _body << std::endl; + // _body = getErrorPage(_code); + // std::cout << RED << "Invalid Client method called\nCODE: " << _code << " " << getReasonPhrase(_code) << ZERO_C << std::endl; + generateBody(); + //Header + generateHeader(); +} + +void Response::generateBody(void) +{ + if (!_request.badCode(_code) && _request.isDir(_request.getFullUri()) == 0) + _body = Autoindex::getPage(_request.getURI(), _request.getFullUri(), _request.getHost()); + else if (!_request.badCode(_code) && _request.isFile(_request.getFullUri()) == 0) + OpenResponseFile(_request.getFullUri().c_str()); + else + _body = getErrorPage(_code); + +} + +void Response::generateHeader(void) +{ + std::stringstream ss; + std::string tmp; + + ss << "HTTP/1.1" << " " << _request.getCode() << " " << getReasonPhrase(_request.getCode()) + << "\r\nContent-Type: text/html" + << "\r\nContent-Length: " << _body.size() + << "\r\nServer: poheck" + << "\r\n\r\n"; + _header = ss.str(); } void Response::methodGet(void) { - std::stringstream ss; - std::string tmp; - //Client - ss << _request.getVersion() << " " << _request.getCode() << " " << getReasonPhrase(_request.getCode()) << "\r\nContent-Type: text/html\r\n\r\n"; - _header = ss.str(); - //body - if (!_request.badCode(_request.getCode()) && _request.isDir(_request.getFullUri()) == 0) - _body = Autoindex::getPage(_request.getURI(), _request.getFullUri(), _request.getHost()); - else if (!_request.badCode(_request.getCode())) - OpenResponseFile(_request.getFullUri().c_str()); - else - _body = getErrorPage(_request.getCode()); + + generateBody(); + generateHeader(); std::cout << GREEN << "GET method called\n" << ZERO_C; + + } //-------------------------------------------------GET/SET--------------------------------------- diff --git a/src/Client/Response.hpp b/src/Client/Response.hpp index 3b60915..43dfbb3 100644 --- a/src/Client/Response.hpp +++ b/src/Client/Response.hpp @@ -12,6 +12,7 @@ private: std::string _header; Request _request; ServerConfig *_config; + int _code; private: static std::map _errorCode; @@ -21,7 +22,8 @@ private: // void methodPost(void); // void methodDelete(void); void invalidClient(void); - + void generateHeader(void); + void generateBody(void); public: std::string getHeader(void); std::string getBody(void);