Initial commit

This commit is contained in:
2019-06-15 12:00:21 +02:00
commit eda5d9df6b
31 changed files with 1328 additions and 0 deletions

View 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>());
}