This commit is contained in:
Talyx
2022-02-19 20:44:03 +03:00
parent 843ffc91ee
commit 11b1985a39
7 changed files with 49 additions and 34 deletions

View File

@@ -176,7 +176,7 @@ std::string Client::generateRespons(std::vector<ServerConfig *> &configs)
_response.generate2(connected_to);
_toSend = new std::string;
*_toSend = _response.getHeader() + _response.getBody();
*_toSend = (_response.getBody().empty()) ? _response.getHeader() : _response.getHeader() + _response.getBody();
len = _toSend->size();
@@ -184,7 +184,10 @@ std::string Client::generateRespons(std::vector<ServerConfig *> &configs)
_to_send_char = new char[len + 1];
std::memcpy(_to_send_char, _toSend->c_str(), len + 1);
std::cout << PINK << "\n[["<< YELLOW << "Request header\n{" << ENDL;
std::cout << BLUE << _request.getHeader() << YELLOW << "},\n" << ENDL;
std::cout << GREEN << "Response Header\n{" << ENDL;
std::cout << BLUE << _response.getHeader() << GREEN << "}" << PINK << "]]\n"<< ENDL;
delete _toSend;
if (_request.getBody() != NULL)
_request.freeData();

View File

@@ -108,6 +108,10 @@ ssize_t Request::getRecved(void) const
{
return (_received);
}
std::string &Request::getHeader(void)
{
return _head;
}
void Request::setData(char *str)
{
this->_data = str;
@@ -226,7 +230,6 @@ void Request::splitData(std::string &data)
str = _head.substr(_headerSize);
_head = tmp;
_head_ok = true;
parseHeader();
if ((_contentLength == 0 && !_chunked) || (_method == "GET"
|| _method == "DELETE" || _method == "HEAD"))

View File

@@ -82,6 +82,7 @@ public:
void clear(void);
void splitData(std::string &);
void freeData(void);
std::string &getHeader(void);
void increaseRecvCounter(unsigned int n);
~Request();

View File

@@ -6,8 +6,8 @@ Response::Response()
{
initErrorCode();
_Autoindex = true;
_body = new std::string;
_header = new std::string;
_body = NULL;
_header = NULL;
_code = 200;
}
@@ -15,7 +15,8 @@ Response::Response()
void Response::freeData(void)
{
delete _body;
if (_body != NULL)
delete _body;
delete _header;
}
@@ -290,6 +291,7 @@ bool Response::allowedMethod(std::string &method)
}
void Response::generateHeader(void)
{
_header = new std::string;
std::stringstream ss;
std::string tmp;
@@ -298,8 +300,8 @@ void Response::generateHeader(void)
ss << "Content-Type: " << _contentType << "\r\n";
ss << "Content-Length: " << _contentLength << "\r\n";
ss << "Server: " << _server << "\r\n";
if (!_keepAlive.empty())
ss << "Keep-Alive: " <<_keepAlive << "\r\n";
// if (!_keepAlive.empty())
// ss << "Keep-Alive: " <<_keepAlive << "\r\n";
ss << "Date: " << _date << "\r\n";
if (!_cacheControl.empty())
ss << "Cache-Control: " << _cacheControl << "\r\n";
@@ -374,6 +376,7 @@ bool Response::isRedirect()
void Response::invalidClient(void)
{
_body = new std::string;
if (!isRedirect())
OpenErrorFile(_code);
setHeaderBlocks();
@@ -385,6 +388,7 @@ void Response::invalidClient(void)
void Response::methodGet(void)
{
_body = new std::string;
if (!_location->cgi_pass.empty())
{
CgiHandle cgi(_request, *this);
@@ -408,12 +412,13 @@ void Response::methodGet(void)
generateBody();
setHeaderBlocks();
generateHeader();
std::cout << GREEN << "GET method called\n" << ZERO_C;
DBOUT << GREEN << "GET method called\n" << ZERO_C;
}
void Response::methodPost(void)
{
if (!_location->cgi_pass.empty())
{
_body = new std::string;
CgiHandle cgi(_request, *this);
*_body = cgi.executeCgi();