Added vscode

This commit is contained in:
Brad Arant 2020-11-07 17:31:08 -08:00
parent 8d971c1545
commit 6e4288adf7
7 changed files with 54 additions and 70 deletions

View File

@ -7,49 +7,43 @@
#include "Log.h"
namespace http {
int HTTPHandler::processCommand(std::string request, core::TCPSession *session, std::stringstream &data) {
coreutils::Log(coreutils::LOG_DEBUG_1) << "DATA[" << request << "]";
coreutils::PString request1(request);
switch(mode) {
case REQUEST:
httpRequest = new HTTPRequest(request1);
session->server.commands.grabInput(session, *this);
mode = IMF;
break;
case IMF:
httpRequest->parse(request1);
if(request == "") {
session->server.commands.clearGrab(session);
mode = REQUEST;
processHTTPRequest(session, data);
}
}
if(!httpRequest) {
httpRequest = new HTTPRequest(request1);
session->server.commands.grabInput(session, *this);
}
else {
httpRequest->parse(request1);
if(request == "") {
session->server.commands.clearGrab(session);
}
}
return true;
}
}
bool HTTPHandler::processHTTPRequest(core::TCPSession *session, std::stringstream &data) {
HTTPSession *httpSession = static_cast<HTTPServer&>(session->server).httpSessions.findSessionByHeader(httpRequest);
std::stringstream content;
if(static_cast<HTTPServer &>(session->server).pageList.processRequest(httpRequest, session, httpSession, content)) {
std::string contentType = httpRequest->getHeader("Content-Type");
if(contentType == "multipart/form-data") {
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.setText("OK");
data << httpRequest->response.getResponse(content.str());
}
}
else {
httpRequest->response.setCode("404");
httpRequest->response.setText("Not Found");
@ -57,5 +51,5 @@ namespace http {
}
return true;
}
}

View File

@ -8,20 +8,18 @@
#include "HTTPRequest.h"
namespace http {
class HTTPHandler : public core::Command {
public:
int processCommand(std::string request, core::TCPSession *session, std::stringstream &data) override;
private:
HTTPRequest *httpRequest;
bool processHTTPRequest(core::TCPSession *session, std::stringstream &data);
enum Mode { REQUEST, IMF };
Mode mode = REQUEST;
};
}
#endif

View File

@ -1,14 +1,14 @@
#include "HTTPPageList.h"
namespace http {
bool HTTPPageList::processRequest(HTTPRequest *httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data) {
httpRequest->response.setProtocol(httpRequest->request->getProtocol());
bool HTTPPageList::processRequest(HTTPRequest *httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data) {
httpRequest->response.setProtocol(httpRequest->request.getProtocol());
for(auto *page : pages) {
if(page->check(httpRequest->request->getURI())) {
return page->processCommand(httpRequest->request->getURI(), session, httpSession, httpRequest, data);
if(page->check(httpRequest->request.getURI())) {
return page->processCommand(httpRequest->request.getURI(), session, httpSession, httpRequest, data);
}
}
}
return false;
}
@ -16,9 +16,9 @@ namespace http {
page.name = name;
pages.push_back(&page);
}
void HTTPPageList::remove(HTTPPage &page) {}
}

View File

@ -18,15 +18,15 @@
# include "__workflow_js.h"
namespace http {
class HTTPPageList {
public:
HTTPPageList() {
HTTPPageList() {
add(index, "/");
add(script, "/script");
add(editview, "/editview");
add(editview_js, "/__editview_js");
add(editview_js, "/__editview_js");
add(style, "/style");
add(setupadmin, "/setupadmin");
add(favicon_ico, "/favicon.ico");
@ -36,17 +36,17 @@ namespace http {
add(viewlist, "/viewlist");
add(workflow, "/workflow");
add(workflow_js, "/__workflow_js");
}
bool processRequest(HTTPRequest *httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data);
}
bool processRequest(HTTPRequest *httpRequest, core::TCPSession *session, HTTPSession *httpSession, std::stringstream &data);
void add(HTTPPage &page, std::string name = "");
void remove(HTTPPage &page);
protected:
std::vector<HTTPPage *> pages;
private:
__index index;
__script script;
@ -61,7 +61,7 @@ namespace http {
__viewlist viewlist;
__workflow workflow;
__workflow_js workflow_js;
};
}

View File

@ -11,22 +11,14 @@
namespace http {
class HTTPRequest : public coreutils::IMFMessage {
public:
HTTPRequest(coreutils::PString &in) : IMFMessage(in) {
message = new IMFMessage(in);
}
bool parse(coreutils::PString &in) {
message->parse(in);
return true;
}
coreutils::IMFRequest *request;
coreutils::IMFMessage *message;
HTTPRequest(coreutils::PString &in) : IMFMessage(in) {}
coreutils::IMFResponse response;
};
}
#endif

Binary file not shown.

10
compile
View File

@ -3,17 +3,17 @@
for file in *.cpp
do
filename="${file%.*}"
list="$list $filename.o"
list="$list $filename.o"
echo -n "Compiling $filename..."
g++ -g -c -I../CoreUtils -I../ServerCore $file
g++ -g -c -I../CoreUtils -I../ServerCore $file
if [ $? = '0' ]
then
echo "OK"
else
echo "ERROR"
exit -1
fi
fi
done
wait
@ -25,6 +25,6 @@ then
else
echo "ERROR"
exit -1
fi
fi