package at.acdp.urweb.web; import at.acdp.urweb.Params; import at.acdp.urweb.URBot; import at.acdp.urweb.sclient.URLog; import org.slf4j.LoggerFactory; import static spark.Spark.*; public class WebServer { private final static org.slf4j.Logger logger = LoggerFactory.getLogger(WebServer.class); private final URBot urbot; private final Params params; public WebServer(Params params) { this.params = params; this.urbot=new URBot(params.robotIP); } public void start() { port(params.port); if (!params.webroot.isEmpty()) staticFileLocation(params.webroot); else staticFiles.location("/webroot"); 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); return r.toJSON(); }); } }