mirror of
https://github.com/3lswear/webserv.git
synced 2025-10-28 21:07:59 +03:00
add: PUT method
This commit is contained in:
@@ -28,7 +28,7 @@
|
|||||||
[[server.location]]
|
[[server.location]]
|
||||||
location = "*.jpeg"
|
location = "*.jpeg"
|
||||||
root = "www/images/jpegImg"
|
root = "www/images/jpegImg"
|
||||||
methods = ["GET"]
|
methods = ["GET", "PUT"]
|
||||||
[[server.location]]
|
[[server.location]]
|
||||||
location = "*.png"
|
location = "*.png"
|
||||||
root = "www/images/pngImg"
|
root = "www/images/pngImg"
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
[[server.location]]
|
[[server.location]]
|
||||||
location = "*.php"
|
location = "*.php"
|
||||||
root = "www/script"
|
root = "www/script"
|
||||||
methods = ["GET", "POST"]
|
methods = ["GET"]
|
||||||
autoindex = false
|
autoindex = false
|
||||||
cgi_pass = "/usr/bin/php-cgi"
|
cgi_pass = "/usr/bin/php-cgi"
|
||||||
[[server]]
|
[[server]]
|
||||||
|
|||||||
@@ -203,9 +203,6 @@ std::string Response::getFullURI(void)
|
|||||||
tmp = _request.getURI().substr(len);
|
tmp = _request.getURI().substr(len);
|
||||||
tmp = _location->root + tmp;
|
tmp = _location->root + tmp;
|
||||||
}
|
}
|
||||||
DBOUT << RED << _location->location << ENDL;
|
|
||||||
DBOUT << len << ENDL;
|
|
||||||
DBOUT << RED << tmp << ENDL;
|
|
||||||
if (_request.isDir(tmp) == 0)
|
if (_request.isDir(tmp) == 0)
|
||||||
{
|
{
|
||||||
if (_location->directoryFile.empty() || _Autoindex)
|
if (_location->directoryFile.empty() || _Autoindex)
|
||||||
@@ -323,9 +320,10 @@ void Response::generate2(serverListen &l)
|
|||||||
methodGet();
|
methodGet();
|
||||||
else if (_method == "POST")
|
else if (_method == "POST")
|
||||||
methodPost();
|
methodPost();
|
||||||
else
|
else if (_method == "DELETE")
|
||||||
methodDelete();
|
methodDelete();
|
||||||
|
else if (_method == "PUT")
|
||||||
|
methodPut();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Response::isRedirect()
|
bool Response::isRedirect()
|
||||||
@@ -365,11 +363,31 @@ void Response::methodPost(void)
|
|||||||
std::ofstream outfile(_fullURI.c_str(), std::ios::out | std::ios::binary);
|
std::ofstream outfile(_fullURI.c_str(), std::ios::out | std::ios::binary);
|
||||||
|
|
||||||
outfile.write(_request.getBody().data(), _request.getBody().size());
|
outfile.write(_request.getBody().data(), _request.getBody().size());
|
||||||
|
outfile.close();
|
||||||
_code = 204;
|
_code = 204;
|
||||||
setHeaderBlocks();
|
setHeaderBlocks();
|
||||||
generateHeader();
|
generateHeader();
|
||||||
DBOUT << GREEN << "POST method called" << ENDL;
|
DBOUT << GREEN << "POST method called" << ENDL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Response::methodPut(void)
|
||||||
|
{
|
||||||
|
_code = 201;
|
||||||
|
if (_request.isFile(_fullURI) == 0)
|
||||||
|
_code = 204;
|
||||||
|
std::ofstream file(_fullURI.c_str(), std::ios::out | std::ios::binary);
|
||||||
|
if (!file.is_open())
|
||||||
|
_code = 403;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
file.write(_request.getBody().data(), _request.getBody().size());
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
setHeaderBlocks();
|
||||||
|
generateHeader();
|
||||||
|
DBOUT << GREEN << "PUT method called" << ENDL;
|
||||||
|
}
|
||||||
|
|
||||||
void Response::methodDelete(void)
|
void Response::methodDelete(void)
|
||||||
{
|
{
|
||||||
if (_request.isFile(_fullURI) == 0)
|
if (_request.isFile(_fullURI) == 0)
|
||||||
@@ -388,6 +406,7 @@ void Response::methodDelete(void)
|
|||||||
DBOUT << GREEN << "Delete method called" << ENDL;
|
DBOUT << GREEN << "Delete method called" << ENDL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//-------------------------------------------------GET/SET---------------------------------------
|
//-------------------------------------------------GET/SET---------------------------------------
|
||||||
|
|
||||||
std::map<std::string, std::string> Response::_errorCode;
|
std::map<std::string, std::string> Response::_errorCode;
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ private:
|
|||||||
private:
|
private:
|
||||||
void methodGet(void);
|
void methodGet(void);
|
||||||
void methodPost(void);
|
void methodPost(void);
|
||||||
|
void methodPut(void);
|
||||||
void methodDelete(void);
|
void methodDelete(void);
|
||||||
void invalidClient(void);
|
void invalidClient(void);
|
||||||
void generateHeader(void);
|
void generateHeader(void);
|
||||||
|
|||||||
Reference in New Issue
Block a user