WebServer.java 2.8 KB

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