Continued development on line model.

This commit is contained in:
Brad Arant 2020-05-04 10:05:32 -07:00
parent 6fbab9fd32
commit 0510ad5dc7
3 changed files with 35 additions and 20 deletions

View File

@ -12,31 +12,42 @@ namespace http {
coreutils::Log(coreutils::LOG_DEBUG_4) << "DATA[" << request << "]"; coreutils::Log(coreutils::LOG_DEBUG_4) << "DATA[" << request << "]";
coreutils::PString request1(request); if(mode == REQUEST) {
HTTPRequest httpRequest(request1);
coreutils::PString request1(request);
HTTPRequest httpRequest(request1);
HTTPSession *httpSession = static_cast<HTTPServer &>(session->server).httpSessions.findSessionByHeader(httpRequest); HTTPSession *httpSession = static_cast<HTTPServer &>(session->server).httpSessions.findSessionByHeader(httpRequest);
std::stringstream content; std::stringstream content;
if(static_cast<HTTPServer &>(session->server).pageList.processRequest(httpRequest, session, httpSession, content)) { if(static_cast<HTTPServer &>(session->server).pageList.processRequest(httpRequest, session, httpSession, content)) {
std::string contentType = httpRequest.getHeader("Content-Type"); std::string contentType = httpRequest.getHeader("Content-Type");
if(contentType == "multipart/form-data") { if(contentType == "multipart/form-data") {
coreutils::IMFFormData *formdata = (coreutils::IMFFormData *)httpRequest.getBody(); coreutils::IMFFormData *formdata = (coreutils::IMFFormData *)httpRequest.getBody();
coreutils::Log(coreutils::LOG_DEBUG_2) << "username is '" << formdata->getByName("username") << "'"; coreutils::Log(coreutils::LOG_DEBUG_2) << "username is '" << formdata->getByName("username") << "'";
} }
httpRequest.response.setCode("200"); httpRequest.response.setCode("200");
httpRequest.response.setText("OK"); httpRequest.response.setText("OK");
data << httpRequest.response.getResponse(content.str()); data << httpRequest.response.getResponse(content.str());
} }
else { else {
httpRequest.response.setCode("404"); httpRequest.response.setCode("404");
httpRequest.response.setText("Not Found"); httpRequest.response.setText("Not Found");
data << httpRequest.response.getResponse(content.str()); data << httpRequest.response.getResponse(content.str());
}
grabInput();
mode = IMFHEADER;
} }
else if(mode == IMFHEADER) {
HTTPHeader header(content);
releaseGrab();
mode = REQUEST;
}
return true; return true;
} }

View File

@ -11,7 +11,11 @@ namespace http {
public: public:
int processCommand(std::string request, core::TCPSession *session, std::stringstream &data) override; int processCommand(std::string request, core::TCPSession *session, std::stringstream &data) override;
private:
enum Mode { REQUEST, IMFHEADER };
Mode mode = REQUEST;
}; };
} }

Binary file not shown.