WebServer.java 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. package at.acdp.urweb.web;
  2. import at.acdp.urweb.Params;
  3. import at.acdp.urweb.RobotCommand;
  4. import at.acdp.urweb.URBot;
  5. import at.acdp.urweb.sclient.URLog;
  6. import com.eclipsesource.json.JsonArray;
  7. import org.slf4j.LoggerFactory;
  8. import static spark.Spark.*;
  9. public class WebServer {
  10. private final static org.slf4j.Logger logger = LoggerFactory.getLogger(WebServer.class);
  11. private URBot urbot;
  12. private final Params params;
  13. public WebServer(Params params) {
  14. this.params = params;
  15. }
  16. public void start() {
  17. this.urbot=new URBot(params.robotIP);
  18. this.urbot.start();
  19. port(params.port);
  20. if (!params.webroot.isEmpty())
  21. staticFileLocation(params.webroot);
  22. else
  23. staticFiles.location("/webroot");
  24. post("/cmd", (req, res) -> {
  25. var cmd=req.queryParams("script");
  26. RobotCommand rc=new RobotCommand(cmd);
  27. rc.cpeeCallback = req.headers("CPEE-CALLBACK");
  28. rc.cpeeCallbackId = req.headers("CPEE-CALLBACK-ID");
  29. rc.cpeeInstanceURL = req.headers("CPEE-INSTANCE-URL");
  30. if (Boolean.valueOf(req.queryParams("callback"))) {
  31. res.header("CPEE-CALLBACK", "true");
  32. rc.doCpeeCallback = true;
  33. }
  34. urbot.sendCmd(rc);
  35. return "";
  36. });
  37. post("/freedrive", (req, res) -> {
  38. urbot.sendFreedrive(1);
  39. return "";
  40. });
  41. post("/digital/:which", (req, res) -> {
  42. int which=Integer.parseInt(req.params("which"));
  43. boolean val = Boolean.valueOf(new String(req.raw().getInputStream().readAllBytes()));
  44. urbot.setDigital(which, val);
  45. return "";
  46. });
  47. get("/digital/:which", (req, res) -> {
  48. int which=Integer.parseInt(req.params("which"));
  49. boolean d=urbot.getDigital(which);
  50. res.body(String.valueOf(d));
  51. return "";
  52. });
  53. get("/log/:from", (req, res) -> {
  54. int from=Integer.parseInt(req.params("from"));
  55. from=Integer.max(0,from);
  56. var r = URLog.get(from);
  57. return r.toJSON();
  58. });
  59. get("/cmdq", (req, res) -> {
  60. JsonArray jsa=new JsonArray();
  61. for(var c:urbot.getCmdq()) {
  62. jsa.add(c.toJSON());
  63. }
  64. return jsa.toString();
  65. });
  66. }
  67. }