Lightweight web server for web commands, start of web config post

This commit is contained in:
Patrick McDonagh
2017-02-28 21:49:52 -06:00
parent 1124d3b10e
commit 0c42974921
6 changed files with 312 additions and 69 deletions

View File

@@ -90,9 +90,21 @@ public class POC implements Runnable{
if (args.length < 2){
final POC realPOC = new POC(dbHostname);
try {
WebServer httpServer = new WebServer(8000, realPOC);
} catch (Exception e){
System.out.println("problem starting web server");
System.out.println(e);
}
realPOC.start();
} else {
final POC simPOC = new POC(args[0], args[1].equals("true"), dbHostname);
try {
WebServer httpServer = new WebServer(8000, simPOC);
} catch (Exception e){
System.out.println("problem starting web server");
System.out.println(e);
}
simPOC.start();
}

View File

@@ -0,0 +1,85 @@
package com.henrypump.poc;
import java.io.*;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import org.json.simple.JSONObject;
/**
* Created by patrickjmcd on 2/28/17.
*/
public class WebServer{
private POC attachedPOC;
private int port;
WebServer(int port, POC attachedPOC) throws Exception {
this.attachedPOC = attachedPOC;
this.port = port;
HttpServer server = HttpServer.create(new InetSocketAddress(port), 0);
server.createContext("/cmd/start", new StartHandler());
server.createContext("/cmd/stop", new StopHandler());
server.createContext("/sts", new StatusHandler());
server.createContext("/cmd/updateconfig", new UpdateConfigHandler());
server.setExecutor(null); // creates a default executor
server.start();
}
class StartHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
attachedPOC.thisWell.start("webserver");
String response = attachedPOC.thisWell.getRunStatusString();
t.sendResponseHeaders(200, response.getBytes().length);
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
class StopHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
attachedPOC.thisWell.stop("webserver");
String response = attachedPOC.thisWell.getRunStatusString();
t.sendResponseHeaders(200, response.getBytes().length);
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
class StatusHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
String response = attachedPOC.thisWell.getRunStatusString();
t.sendResponseHeaders(200, response.getBytes().length);
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
class UpdateConfigHandler implements HttpHandler {
@Override
public void handle(HttpExchange t) throws IOException {
attachedPOC.thisWell.getWellSetup();
JSONObject respJSON = new JSONObject();
respJSON.put("status", "OK");
String response = respJSON.toJSONString();
t.sendResponseHeaders(200, response.getBytes().length);
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
}