Initial commit
This commit is contained in:
45
src/server/connectionoperator.cpp
Normal file
45
src/server/connectionoperator.cpp
Normal file
@@ -0,0 +1,45 @@
|
||||
#include "../middleware/notfound.hpp"
|
||||
#include "../middleware/staticcontent.hpp"
|
||||
#include "../logger.hpp"
|
||||
#include "configuration.hpp"
|
||||
#include "connectionoperator.hpp"
|
||||
#include <cstdio>
|
||||
#include <sstream>
|
||||
|
||||
void ConnectionOperator::HandleNewConnection(Connection const & newConnection)
|
||||
{
|
||||
auto requestBytes = newConnection.ReadBytes();
|
||||
Http::Request request = Http::Request::Deserialize(requestBytes);
|
||||
|
||||
Http::Response response;
|
||||
for(size_t i = 0; i < middlewares.size(); ++i)
|
||||
{
|
||||
middlewares[i]->HandleRequest(request, response);
|
||||
}
|
||||
|
||||
if (response.code == HttpResponse::Code::UNKNOWN)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "Unhandled request for file <";
|
||||
ss << request.path;
|
||||
ss << '>';
|
||||
Logger::GetInstance().Error(ss.str());
|
||||
return;
|
||||
}
|
||||
|
||||
auto bytesToSend = response.Serialize();
|
||||
newConnection.WriteBytes(bytesToSend);
|
||||
}
|
||||
|
||||
ConnectionOperator::ConnectionOperator()
|
||||
{
|
||||
// Base static file server
|
||||
auto const & staticFileRoot = ServerConfiguration::GetInstance().GetWwwRoot();
|
||||
if (staticFileRoot.size() > 0)
|
||||
{
|
||||
middlewares.emplace_back(std::make_unique<Middleware::StaticContent>(staticFileRoot));
|
||||
}
|
||||
|
||||
// ALWAYS LAST!
|
||||
middlewares.emplace_back(std::make_unique<Middleware::NotFound>());
|
||||
}
|
||||
Reference in New Issue
Block a user