diff --git a/includes/config/URL.hpp b/includes/config/URL.hpp index 00710d7..245b669 100644 --- a/includes/config/URL.hpp +++ b/includes/config/URL.hpp @@ -6,7 +6,7 @@ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/22 12:17:48 by adjoly #+# #+# */ -/* Updated: 2025/04/29 15:48:19 by adjoly ### ########.fr */ +/* Updated: 2025/04/30 14:38:03 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -17,7 +17,6 @@ #include #include #include -#include class URL { public: @@ -31,9 +30,11 @@ class URL { return _full_url < other._full_url; } - std::vector getSegments(void) { return _path_segments; } - std::string getFullUrl(void) const { return _full_url; } + std::vector getSegments(void) const { return _path_segments; } + + std::string getFullUrl(void) const { return _full_url; } std::string getQueryString(void) const { return _query_string; } + std::string getPort(void) const { return _port; } private: void parse() { @@ -97,7 +98,6 @@ class URL { }; inline std::ostream &operator<<(std::ostream &os, const URL &URL) { - os << URL.getFullUrl(); return os; } diff --git a/includes/requests/ARequest.hpp b/includes/requests/ARequest.hpp index aa81bd6..39dc443 100644 --- a/includes/requests/ARequest.hpp +++ b/includes/requests/ARequest.hpp @@ -6,7 +6,7 @@ /* By: mmoussou +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/14 14:14:39 by adjoly #+# #+# */ -/* Updated: 2025/04/30 09:37:38 by adjoly ### ########.fr */ +/* Updated: 2025/04/30 14:51:39 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ #pragma once #include +#include #include #include #include @@ -30,7 +31,7 @@ class Client { void parse(void); void answer(void); - bool requestParsed(void); + bool requestParsed(void); struct pollfd *getPollfd(void) const { return _pfd; } @@ -43,11 +44,21 @@ class Client { private: void _getRequest(std::string); + std::string _sanitizeStr(std::string &str) { + std::string newStr = str; + + if (str[str.size() - 1] == '\r') { + newStr.erase(str.size() - 1); + } + return newStr; + } + struct pollfd *_pfd; struct sockaddr_in _client_addr; http::ARequest *_request; // http::Response *_response; config::Server *_conf; + config::Route *_route; config::Config *_Gconf; }; diff --git a/src/requests_handling/requestImplementation/Get.cpp b/src/requests_handling/requestImplementation/Get.cpp index 6bcf749..29288ee 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 09:41:41 by adjoly ### ########.fr */ +/* Updated: 2025/04/30 14:54:23 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -28,6 +28,9 @@ void Get::parse(std::string const &data) { if (std::getline(stream, line)) { std::istringstream line_stream(line); line_stream >> this->_method >> this->_target >> this->_protocol; + _method = _sanitizeStr(_method); + _target = _sanitizeStr(_target); + _protocol = _sanitizeStr(_protocol); /* this->_target.insert(this->_target.begin(), '.'); */ } @@ -36,7 +39,7 @@ void Get::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))); } } @@ -46,6 +49,9 @@ void Get::parse(std::string const &data) { this->_body = body_stream.str(); _url = new URL("http://" + _headers["Host"] + _target); + + + std::cout << "wtf = " << _headers["Host"] << std::endl; std::cout << *_url << std::endl; /* diff --git a/src/server/Client.cpp b/src/server/Client.cpp index b62841c..5bf7ead 100644 --- a/src/server/Client.cpp +++ b/src/server/Client.cpp @@ -6,11 +6,12 @@ /* By: mmoussou #include #include @@ -19,7 +20,7 @@ using namespace webserv::server; Client::Client(struct pollfd *pfd, sockaddr_in socket, config::Config *conf) : _pfd(pfd), _client_addr(socket), _Gconf(conf) { - _request = not_nullptr; + _request = not_nullptr; log("➕", "Client", "constructor called"); } @@ -44,15 +45,15 @@ void Client::parse(void) { received_data += std::string(buffer, bytes_received); } while (buffer[bytes_received]); - this->_getRequest(received_data); + _getRequest(received_data); - this->_conf = _Gconf->getServer(this->_request->getHeaders()["Host"]); + _conf = _Gconf->getServer(this->_request->getHeaders()["Host"]); // if (received_data.length > (get max_body_size from Route corresponding) ) // throw error } - bool Client::requestParsed(void) { +bool Client::requestParsed(void) { if (_request == not_nullptr) { return false; } @@ -63,6 +64,12 @@ 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") { this->_request = new http::Get(request_str); _log->info("get request received");