|
@@ -2,90 +2,58 @@ package at.acdp.urweb.web;
|
|
|
|
|
|
import java.nio.file.Paths;
|
|
|
|
|
|
+import at.acdp.urweb.Params;
|
|
|
import at.acdp.urweb.URBot;
|
|
|
import at.acdp.urweb.sclient.URLog;
|
|
|
-import io.undertow.Handlers;
|
|
|
-import io.undertow.Undertow;
|
|
|
-import io.undertow.server.HttpHandler;
|
|
|
-import io.undertow.server.HttpServerExchange;
|
|
|
-import io.undertow.server.handlers.HttpTraceHandler;
|
|
|
-import io.undertow.server.handlers.resource.PathResourceManager;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
|
-import static io.undertow.Handlers.resource;
|
|
|
+import static spark.Spark.*;
|
|
|
|
|
|
public class WebServer {
|
|
|
private final static org.slf4j.Logger logger = LoggerFactory.getLogger(WebServer.class);
|
|
|
- private final int port;
|
|
|
private final URBot urbot;
|
|
|
- private Undertow server;
|
|
|
+ private final Params params;
|
|
|
|
|
|
- public WebServer(int port, boolean debug, URBot urbot) {
|
|
|
- this.urbot = urbot;
|
|
|
- this.port = port;
|
|
|
+ public WebServer(Params params) {
|
|
|
+ this.params = params;
|
|
|
+ this.urbot=new URBot(params.robotIP);
|
|
|
}
|
|
|
|
|
|
public void start() {
|
|
|
- Undertow.Builder builder = Undertow.builder();
|
|
|
- builder.addHttpListener(port, "0.0.0.0");
|
|
|
- builder.setHandler(Handlers.routing()
|
|
|
- .post("/cmd", new HttpHandler() {
|
|
|
- @Override
|
|
|
- public void handleRequest(HttpServerExchange ex) throws Exception {
|
|
|
- if(!dispatch(ex,this)) return;
|
|
|
- byte[] bytes = ex.getInputStream().readAllBytes();
|
|
|
- String cmd=new String(bytes);
|
|
|
- urbot.sendProgram(cmd);
|
|
|
- }
|
|
|
- })
|
|
|
- .post("/freedrive", new HttpHandler() {
|
|
|
- @Override
|
|
|
- public void handleRequest(HttpServerExchange ex) throws Exception {
|
|
|
- dispatch(ex, this);
|
|
|
- urbot.sendFreedrive(1);
|
|
|
- }
|
|
|
- })
|
|
|
- .post("/digital/{which}", new HttpHandler() {
|
|
|
- @Override
|
|
|
- public void handleRequest(HttpServerExchange ex) throws Exception {
|
|
|
- if(!dispatch(ex,this)) return;
|
|
|
- int which= Integer.parseInt(ex.getQueryParameters().get("which").getFirst());
|
|
|
- boolean val = Boolean.valueOf(new String(ex.getInputStream().readAllBytes()));
|
|
|
- urbot.setDigital(which, val);
|
|
|
- }
|
|
|
- })
|
|
|
- .get("/digital/{which}", new HttpHandler() {
|
|
|
- @Override
|
|
|
- public void handleRequest(HttpServerExchange ex) throws Exception {
|
|
|
- if(!dispatch(ex,this)) return;
|
|
|
- int which= Integer.parseInt(ex.getQueryParameters().get("which").getFirst());
|
|
|
- boolean res=urbot.getDigital(which);
|
|
|
- ex.getResponseSender().send(String.valueOf(res));
|
|
|
- }
|
|
|
- })
|
|
|
- .get("/log/{from}", ex -> {
|
|
|
- var x=ex.getQueryParameters().get("from").getFirst();
|
|
|
- int from= Integer.parseInt(ex.getQueryParameters().get("from").getFirst());
|
|
|
- from=Integer.max(0,from);
|
|
|
- var r = URLog.get(from);
|
|
|
- ex.getResponseSender().send(r.toJSON().toString());
|
|
|
- })
|
|
|
- .get("/test/{id}", ex -> {
|
|
|
- System.out.println(ex.getQueryParameters().get("id").getFirst());
|
|
|
- })
|
|
|
- .get("/*", resource(new PathResourceManager(Paths.get("webroot"), 100))
|
|
|
- .setDirectoryListingEnabled(true))
|
|
|
- );
|
|
|
- server = builder.build();
|
|
|
- server.start();
|
|
|
- }
|
|
|
+ port(params.port);
|
|
|
+ if (!params.webroot.isEmpty())
|
|
|
+ staticFileLocation(params.webroot);
|
|
|
+ else
|
|
|
+ staticFiles.location("/webroot");
|
|
|
|
|
|
- private boolean dispatch(HttpServerExchange ex, HttpHandler handler) {
|
|
|
- if (ex.isInIoThread()) {
|
|
|
- ex.dispatch(handler);
|
|
|
- return false;
|
|
|
- }
|
|
|
- ex.startBlocking();
|
|
|
- return true;
|
|
|
+ post("/cmd", (req, res) -> {
|
|
|
+ byte[] bytes = req.raw().getInputStream().readAllBytes();
|
|
|
+ String cmd=new String(bytes);
|
|
|
+ urbot.sendProgram(cmd);
|
|
|
+ return "";
|
|
|
+ });
|
|
|
+ post("/freedrive", (req, res) -> {
|
|
|
+ urbot.sendFreedrive(1);
|
|
|
+ return "";
|
|
|
+ });
|
|
|
+ post("/digital/:which", (req, res) -> {
|
|
|
+ int which=Integer.parseInt(req.params("which"));
|
|
|
+ boolean val = Boolean.valueOf(new String(req.raw().getInputStream().readAllBytes()));
|
|
|
+ urbot.setDigital(which, val);
|
|
|
+ return "";
|
|
|
+ });
|
|
|
+ get("/digital/:which", (req, res) -> {
|
|
|
+ int which=Integer.parseInt(req.params("which"));
|
|
|
+ boolean d=urbot.getDigital(which);
|
|
|
+ res.body(String.valueOf(d));
|
|
|
+ return "";
|
|
|
+ });
|
|
|
+ get("/log/:from", (req, res) -> {
|
|
|
+ int from=Integer.parseInt(req.params("from"));
|
|
|
+ from=Integer.max(0,from);
|
|
|
+ var r = URLog.get(from);
|
|
|
+ res.body(String.valueOf(r.toJSON().toString()));
|
|
|
+ return "";
|
|
|
+ });
|
|
|
}
|
|
|
}
|