HEAD support

This commit is contained in:
2019-06-19 19:20:10 +02:00
parent 0004064a27
commit d8cfca8fc5
5 changed files with 23 additions and 25 deletions

View File

@@ -26,8 +26,8 @@ namespace Http
std::string requestTypeString;
ss >> requestTypeString;
request.requestType = ToEnum<HttpRequest::Type>(requestTypeString, HttpRequest::typeStrings);
if (request.requestType == HttpRequest::Type::UNKNOWN)
request.type = ToEnum<HttpRequest::Type>(requestTypeString, HttpRequest::typeStrings);
if (request.type == HttpRequest::Type::UNKNOWN)
{
throw std::runtime_error("Bad request type");
}

View File

@@ -6,7 +6,7 @@ namespace Http
{
struct Request
{
HttpRequest::Type requestType;
HttpRequest::Type type;
Url url;
static Request Deserialize(std::vector<char> const & bytes);

View File

@@ -6,12 +6,15 @@ 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;
if (request.type == HttpRequest::Type::GET)
{
response.contentType = Http::GetMimeType(Http::FileType::HTML);
std::stringstream ss;
@@ -25,6 +28,7 @@ namespace Middleware
responseContent.begin(),
responseContent.end());
}
}
NotFound::NotFound(Logger & _logger)
: BaseMiddleware(_logger)

View File

@@ -50,16 +50,10 @@ namespace Middleware
void StaticContent::HandleRequest(Http::Request const & request, Http::Response & response)
{
switch(request.requestType)
{
case HttpRequest::Type::GET:
break;
default:
if (!(request.type == HttpRequest::Type::GET || request.type == HttpRequest::Type::HEAD))
{
return;
}
}
std::string path;
if (request.url.HasPath())
@@ -79,7 +73,7 @@ namespace Middleware
return;
}
if (!TryReadAllBytes(path, response.content))
if (request.type == HttpRequest::Type::GET && !TryReadAllBytes(path, response.content))
{
return;
}

View File

@@ -50,7 +50,7 @@ void ConnectionOperator::HandleNewConnection(ClientSocket const & newClient)
{
std::stringstream ss;
ss << "Unhandled ";
ss << HttpRequest::typeStrings[static_cast<int>(request.requestType)];
ss << HttpRequest::typeStrings[static_cast<int>(request.type)];
ss << " request for file <";
ss << request.url.GetPath();
ss << '>';