JETServer
/home/bradarant/barant/HTTPServer/__script.h
1 #ifndef ____script_h__
2 #define ____script_h__
3 
4 #include "HTTPPage.h"
5 
6 namespace http {
7 
8  class __script : public HTTPPage {
9 
10  int processCommand(std::string request, core::Session *session, HTTPSession *httpSession, HTTPRequest &httpRequest, std::stringstream &data) override {
11 
12  data << "function serverSend(url, type, receiver, formData, callback) {" << std::endl;
13  data << " var server = new XMLHttpRequest();" << std::endl;
14  data << " server.onload = function() {" << std::endl;
15  data << " if(server.readyState == 4 && server.status == 200)" << std::endl;
16  data << " callback(server.responseText, receiver);" << std::endl;
17  data << " };" << std::endl;
18  data << " server.open(type, url, true);" << std::endl;
19  data << " server.send(formData);" << std::endl;
20  data << "}" << std::endl;
21 
22  data << "function getPage(url, receiver) {" << std::endl;
23  data << " serverSend(url, \"GET\", receiver, null, function(data, receiver) {" << std::endl;
24  data << " insertAndExecute(receiver, data);" << std::endl;
25  data << " });" << std::endl;
26  data << "}" << std::endl;
27 
28  data << "function process(url, formName, receiver) {" << std::endl;
29  data << " var formElement = document.querySelector(\"form[name='\" + formName + \"']\");" << std::endl;
30  data << " var formData = new FormData(formElement);" << std::endl;
31  data << " serverSend(url, \"POST\", receiver, formData, function(data, receiver) {" << std::endl;
32  data << " insertAndExecute(receiver, data);" << std::endl;
33  data << " });" << std::endl;
34  data << "}" << std::endl;
35 
36  data << "function insertAndExecute(id, text) {" << std::endl;
37  data << " idresolved = document.getElementById(id);" << std::endl;
38  data << " idresolved.innerHTML = text;" << std::endl;
39  data << " var script = idresolved.getElementsByTagName(\"script\");" << std::endl;
40  data << " for(var ix=0;ix<script.length;ix++) {" << std::endl;
41  data << " eval(script[ix].text);" << std::endl;
42  data << " }" << std::endl;
43  data << "}" << std::endl;
44 
45  httpRequest.response.addHeader("Content-Type", "text/javascript");
46 
47  return true;
48  }
49  };
50 }
51 
52 #endif
Definition: __script.h:8
Definition: HTTPSession.h:9
Definition: __configure.h:4
Definition: HTTPPage.h:11
Definition: HTTPRequest.h:11