diff --git a/includes/requests/ARequest.hpp b/includes/requests/ARequest.hpp index 39dc443..ff736fe 100644 --- a/includes/requests/ARequest.hpp +++ b/includes/requests/ARequest.hpp @@ -6,7 +6,7 @@ /* By: mmoussou _target = target; } void ARequest::setProtocol(std::string const protocol) { this->_protocol = protocol; } + +URL ARequest::getUrl() const +{ + if (this->_url) + return *(this->_url); + else + return URL(""); +} diff --git a/src/requests_handling/requestImplementation/Delete.cpp b/src/requests_handling/requestImplementation/Delete.cpp index 702058d..0bef919 100644 --- a/src/requests_handling/requestImplementation/Delete.cpp +++ b/src/requests_handling/requestImplementation/Delete.cpp @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/30 09:42:18 by adjoly #+# #+# */ -/* Updated: 2025/04/30 09:47:33 by adjoly ### ########.fr */ +/* Updated: 2025/04/30 15:17:15 by mmoussou ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,7 +28,10 @@ void Delete::parse(std::string const &data) { if (std::getline(stream, line)) { std::istringstream line_stream(line); line_stream >> this->_method >> this->_target >> this->_protocol; - this->_target.insert(this->_target.begin(), '.'); + _method = _sanitizeStr(_method); + _target = _sanitizeStr(_target); + _protocol = _sanitizeStr(_protocol); + // this->_target.insert(this->_target.begin(), '.'); } while (std::getline(stream, line) && line != "\r") { @@ -36,7 +39,7 @@ void Delete::parse(std::string const &data) { if (delimiter_index != std::string::npos) { std::string key = line.substr(0, delimiter_index); std::string value = line.substr(delimiter_index + 2); - this->_headers.insert(std::make_pair(key, value)); + this->_headers.insert(std::make_pair(key, _sanitizeStr(value))); } } diff --git a/src/requests_handling/requestImplementation/Get.cpp b/src/requests_handling/requestImplementation/Get.cpp index 29288ee..c8421ef 100644 --- a/src/requests_handling/requestImplementation/Get.cpp +++ b/src/requests_handling/requestImplementation/Get.cpp @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/30 09:40:16 by adjoly #+# #+# */ -/* Updated: 2025/04/30 14:54:23 by adjoly ### ########.fr */ +/* Updated: 2025/04/30 15:30:08 by mmoussou ### ########.fr */ /* */ /* ************************************************************************** */ @@ -31,7 +31,6 @@ void Get::parse(std::string const &data) { _method = _sanitizeStr(_method); _target = _sanitizeStr(_target); _protocol = _sanitizeStr(_protocol); - /* this->_target.insert(this->_target.begin(), '.'); */ } while (std::getline(stream, line) && line != "\r") { @@ -50,9 +49,8 @@ void Get::parse(std::string const &data) { _url = new URL("http://" + _headers["Host"] + _target); - - std::cout << "wtf = " << _headers["Host"] << std::endl; - std::cout << *_url << std::endl; + /*std::cout << "wtf = " << _headers["Host"] << std::endl; + std::cout << *_url << std::endl;*/ /* std::cout << "-- start-line --" << std::endl; diff --git a/src/requests_handling/requestImplementation/Post.cpp b/src/requests_handling/requestImplementation/Post.cpp index f90bf78..fc282c3 100644 --- a/src/requests_handling/requestImplementation/Post.cpp +++ b/src/requests_handling/requestImplementation/Post.cpp @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/30 09:50:20 by adjoly #+# #+# */ -/* Updated: 2025/04/30 09:50:22 by adjoly ### ########.fr */ +/* Updated: 2025/04/30 15:18:01 by mmoussou ### ########.fr */ /* */ /* ************************************************************************** */ @@ -30,7 +30,10 @@ void Post::parse(std::string const &data) { if (std::getline(stream, line)) { std::istringstream line_stream(line); line_stream >> this->_method >> this->_target >> this->_protocol; - this->_target.insert(this->_target.begin(), '.'); + _method = _sanitizeStr(_method); + _target = _sanitizeStr(_target); + _protocol = _sanitizeStr(_protocol); + // this->_target.insert(this->_target.begin(), '.'); } while (std::getline(stream, line) && line != "\r") { @@ -38,7 +41,7 @@ void Post::parse(std::string const &data) { if (delimiter_index != std::string::npos) { std::string key = line.substr(0, delimiter_index); std::string value = line.substr(delimiter_index + 2); - this->_headers.insert(std::make_pair(key, value)); + this->_headers.insert(std::make_pair(key, _sanitizeStr(value))); } } diff --git a/src/server/Client.cpp b/src/server/Client.cpp index 5bf7ead..0d37ae8 100644 --- a/src/server/Client.cpp +++ b/src/server/Client.cpp @@ -6,7 +6,7 @@ /* By: mmoussou getServer(this->_request->getHeaders()["Host"]); + this->_conf = this->_Gconf->getServer(this->_request->getHeaders()["Host"]); + this->_route = this->_conf->whatRoute(URL(this->_request->getTarget())); + std::cout << "_route is " << (_route ? "not null" : "NULL") << std::endl; + if(!this->_route || this->_route == not_nullptr) + { + this->_request->setMethod("404"); + return ; + } - // if (received_data.length > (get max_body_size from Route corresponding) ) - // throw error + if ((this->_request->getMethod() == "GET" && !_route->getMethods()[0]) + || (this->_request->getMethod() == "POST" && !_route->getMethods()[1]) + || (this->_request->getMethod() == "DELETE" && !_route->getMethods()[2])) + this->_request->setMethod("405"); + + if (received_data.length() > (unsigned long)(_route->getMaxBody())) + this->_request->setMethod("413"); } bool Client::requestParsed(void) { - if (_request == not_nullptr) { + if (_request == not_nullptr) return false; - } return true; } @@ -64,22 +75,23 @@ void Client::_getRequest(std::string request_str) { std::string method = request_str.substr( 0, request_str.substr(0, 4).find_last_not_of(" ") + 1); - (void)_route; - /* if (_isAllowed(method)) { */ - /* _request = new http::Get(); */ - /* _request->setMethod("405"); */ - /* _log->info("405 methods not allowed"); // TODO make a better log print */ - /* } */ - if (method == "GET") { + if (method == "GET") + { this->_request = new http::Get(request_str); _log->info("get request received"); - } else if (method == "DELETE") { + } + else if (method == "DELETE") + { this->_request = new http::Delete(request_str); _log->info("delete request received"); - } else if (method == "POST") { + } + else if (method == "POST") + { this->_request = new http::Post(request_str); _log->info("post request received"); - } else { + } + else + { this->_request = new http::Get(); this->_request->setMethod("501"); _log->info("unsupported request received");