39 lines
1.3 KiB
C++
39 lines
1.3 KiB
C++
#include "HTTPHandler.h"
|
|
#include "HTTPSession.h"
|
|
#include "HTTPService.h"
|
|
#include "HTTPRequest.h"
|
|
#include "PString.h"
|
|
#include "Log.h"
|
|
|
|
namespace http {
|
|
|
|
int HTTPHandler::processCommand(std::string request, core::Session *session, std::stringstream &data) {
|
|
|
|
coreutils::PString request1(request);
|
|
HTTPRequest httpRequest(request1);
|
|
|
|
core::Log(core::LOG_DEBUG_2) << "Host value is " << httpRequest.getHeader("Host");
|
|
core::Log(core::LOG_DEBUG_3) << "Request: " << request;
|
|
|
|
HTTPSession *httpSession = ((HTTPService &)session->service).httpSessions.findSessionByHeader(httpRequest);
|
|
|
|
std::stringstream content;
|
|
if(((HTTPService &)session->service).pageList.processRequest(httpRequest.request.getURI(), session, httpSession, httpRequest, content)) {
|
|
httpRequest.response.setProtocol(httpRequest.request.getProtocol());
|
|
httpRequest.response.setCode("200");
|
|
httpRequest.response.setText("OK");
|
|
data << httpRequest.response.getResponse(content.str());
|
|
}
|
|
|
|
else {
|
|
httpRequest.response.setProtocol(httpRequest.request.getProtocol());
|
|
httpRequest.response.setCode("404");
|
|
httpRequest.response.setText("Not Found");
|
|
data << httpRequest.response.getResponse(content.str());
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
}
|