diff --git a/src/http/request.cpp b/src/http/request.cpp index 8830f98..b20b435 100644 --- a/src/http/request.cpp +++ b/src/http/request.cpp @@ -26,8 +26,8 @@ namespace Http std::string requestTypeString; ss >> requestTypeString; - request.requestType = ToEnum(requestTypeString, HttpRequest::typeStrings); - if (request.requestType == HttpRequest::Type::UNKNOWN) + request.type = ToEnum(requestTypeString, HttpRequest::typeStrings); + if (request.type == HttpRequest::Type::UNKNOWN) { throw std::runtime_error("Bad request type"); } diff --git a/src/http/request.hpp b/src/http/request.hpp index 9012fbc..47b6db4 100644 --- a/src/http/request.hpp +++ b/src/http/request.hpp @@ -6,7 +6,7 @@ namespace Http { struct Request { - HttpRequest::Type requestType; + HttpRequest::Type type; Url url; static Request Deserialize(std::vector const & bytes); diff --git a/src/middleware/notfound.cpp b/src/middleware/notfound.cpp index d5628c2..228449f 100644 --- a/src/middleware/notfound.cpp +++ b/src/middleware/notfound.cpp @@ -6,24 +6,28 @@ namespace Middleware { void NotFound::HandleRequest(Http::Request const & request, Http::Response & response) { - if (response.code != HttpResponse::Code::UNKNOWN || request.requestType != HttpRequest::Type::GET) + if (response.code != HttpResponse::Code::UNKNOWN && + !(request.type == HttpRequest::Type::GET || request.type == HttpRequest::Type::HEAD)) { return; } response.code = HttpResponse::Code::NOT_FOUND; - response.contentType = Http::GetMimeType(Http::FileType::HTML); - - std::stringstream ss; - ss << ""; - ss << "

404 - File Not Found

"; - ss << "

File: " << request.url.GetPath() << "

"; - ss << ""; + if (request.type == HttpRequest::Type::GET) + { + response.contentType = Http::GetMimeType(Http::FileType::HTML); + + std::stringstream ss; + ss << ""; + ss << "

404 - File Not Found

"; + ss << "

File: " << request.url.GetPath() << "

"; + ss << ""; - auto responseContent = ss.str(); - response.content.insert(response.content.begin(), - responseContent.begin(), - responseContent.end()); + auto responseContent = ss.str(); + response.content.insert(response.content.begin(), + responseContent.begin(), + responseContent.end()); + } } NotFound::NotFound(Logger & _logger) diff --git a/src/middleware/staticcontent.cpp b/src/middleware/staticcontent.cpp index 1c4ab14..776793f 100644 --- a/src/middleware/staticcontent.cpp +++ b/src/middleware/staticcontent.cpp @@ -50,15 +50,9 @@ namespace Middleware void StaticContent::HandleRequest(Http::Request const & request, Http::Response & response) { - switch(request.requestType) + if (!(request.type == HttpRequest::Type::GET || request.type == HttpRequest::Type::HEAD)) { - case HttpRequest::Type::GET: - break; - - default: - { - return; - } + return; } std::string path; @@ -79,7 +73,7 @@ namespace Middleware return; } - if (!TryReadAllBytes(path, response.content)) + if (request.type == HttpRequest::Type::GET && !TryReadAllBytes(path, response.content)) { return; } diff --git a/src/server/connectionoperator.cpp b/src/server/connectionoperator.cpp index 44ac88d..a3763c6 100644 --- a/src/server/connectionoperator.cpp +++ b/src/server/connectionoperator.cpp @@ -50,7 +50,7 @@ void ConnectionOperator::HandleNewConnection(ClientSocket const & newClient) { std::stringstream ss; ss << "Unhandled "; - ss << HttpRequest::typeStrings[static_cast(request.requestType)]; + ss << HttpRequest::typeStrings[static_cast(request.type)]; ss << " request for file <"; ss << request.url.GetPath(); ss << '>';