add: content-length, server

This commit is contained in:
Talyx
2022-02-01 16:41:41 +03:00
parent d3425e88a3
commit 4e673e46fb
2 changed files with 39 additions and 19 deletions

View File

@@ -5,6 +5,7 @@
Response::Response() Response::Response()
{ {
initErrorCode(); initErrorCode();
_code = 200;
} }
//-------------------------------------------------GET/SET--------------------------------------- //-------------------------------------------------GET/SET---------------------------------------
@@ -21,6 +22,7 @@ std::string Response::getBody(void)
void Response::setData(Request request, ServerConfig *config) void Response::setData(Request request, ServerConfig *config)
{ {
_request = request; _request = request;
_code = request.getCode();
_config = config; _config = config;
} }
@@ -65,32 +67,48 @@ void Response::invalidClient(void)
{ {
std::stringstream ss; std::stringstream ss;
std::string tmp; 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
_body = getErrorPage(_request.getCode()); // _body = getErrorPage(_code);
std::cout << RED << "Invalid Client method called\nCODE: " << _request.getCode() << " " << getReasonPhrase(_request.getCode()) << ZERO_C << std::endl; // std::cout << RED << "Invalid Client method called\nCODE: " << _code << " " << getReasonPhrase(_code) << ZERO_C << std::endl;
std::cout << _header << std::endl << _body << 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) void Response::methodGet(void)
{ {
std::stringstream ss;
std::string tmp; generateBody();
//Client generateHeader();
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());
std::cout << GREEN << "GET method called\n" << ZERO_C; std::cout << GREEN << "GET method called\n" << ZERO_C;
} }
//-------------------------------------------------GET/SET--------------------------------------- //-------------------------------------------------GET/SET---------------------------------------

View File

@@ -12,6 +12,7 @@ private:
std::string _header; std::string _header;
Request _request; Request _request;
ServerConfig *_config; ServerConfig *_config;
int _code;
private: private:
static std::map<std::string, std::string> _errorCode; static std::map<std::string, std::string> _errorCode;
@@ -21,7 +22,8 @@ private:
// void methodPost(void); // void methodPost(void);
// void methodDelete(void); // void methodDelete(void);
void invalidClient(void); void invalidClient(void);
void generateHeader(void);
void generateBody(void);
public: public:
std::string getHeader(void); std::string getHeader(void);
std::string getBody(void); std::string getBody(void);