HEAD support
This commit is contained in:
@@ -26,8 +26,8 @@ namespace Http
|
|||||||
|
|
||||||
std::string requestTypeString;
|
std::string requestTypeString;
|
||||||
ss >> requestTypeString;
|
ss >> requestTypeString;
|
||||||
request.requestType = ToEnum<HttpRequest::Type>(requestTypeString, HttpRequest::typeStrings);
|
request.type = ToEnum<HttpRequest::Type>(requestTypeString, HttpRequest::typeStrings);
|
||||||
if (request.requestType == HttpRequest::Type::UNKNOWN)
|
if (request.type == HttpRequest::Type::UNKNOWN)
|
||||||
{
|
{
|
||||||
throw std::runtime_error("Bad request type");
|
throw std::runtime_error("Bad request type");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace Http
|
|||||||
{
|
{
|
||||||
struct Request
|
struct Request
|
||||||
{
|
{
|
||||||
HttpRequest::Type requestType;
|
HttpRequest::Type type;
|
||||||
Url url;
|
Url url;
|
||||||
|
|
||||||
static Request Deserialize(std::vector<char> const & bytes);
|
static Request Deserialize(std::vector<char> const & bytes);
|
||||||
|
|||||||
@@ -6,12 +6,15 @@ namespace Middleware
|
|||||||
{
|
{
|
||||||
void NotFound::HandleRequest(Http::Request const & request, Http::Response & response)
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
response.code = HttpResponse::Code::NOT_FOUND;
|
response.code = HttpResponse::Code::NOT_FOUND;
|
||||||
|
if (request.type == HttpRequest::Type::GET)
|
||||||
|
{
|
||||||
response.contentType = Http::GetMimeType(Http::FileType::HTML);
|
response.contentType = Http::GetMimeType(Http::FileType::HTML);
|
||||||
|
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
@@ -25,6 +28,7 @@ namespace Middleware
|
|||||||
responseContent.begin(),
|
responseContent.begin(),
|
||||||
responseContent.end());
|
responseContent.end());
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
NotFound::NotFound(Logger & _logger)
|
NotFound::NotFound(Logger & _logger)
|
||||||
: BaseMiddleware(_logger)
|
: BaseMiddleware(_logger)
|
||||||
|
|||||||
@@ -50,16 +50,10 @@ namespace Middleware
|
|||||||
|
|
||||||
void StaticContent::HandleRequest(Http::Request const & request, Http::Response & response)
|
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;
|
std::string path;
|
||||||
if (request.url.HasPath())
|
if (request.url.HasPath())
|
||||||
@@ -79,7 +73,7 @@ namespace Middleware
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!TryReadAllBytes(path, response.content))
|
if (request.type == HttpRequest::Type::GET && !TryReadAllBytes(path, response.content))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ void ConnectionOperator::HandleNewConnection(ClientSocket const & newClient)
|
|||||||
{
|
{
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << "Unhandled ";
|
ss << "Unhandled ";
|
||||||
ss << HttpRequest::typeStrings[static_cast<int>(request.requestType)];
|
ss << HttpRequest::typeStrings[static_cast<int>(request.type)];
|
||||||
ss << " request for file <";
|
ss << " request for file <";
|
||||||
ss << request.url.GetPath();
|
ss << request.url.GetPath();
|
||||||
ss << '>';
|
ss << '>';
|
||||||
|
|||||||
Reference in New Issue
Block a user