WebServer.java 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package com.acdp.transceivr;
  2. import com.eclipsesource.json.JsonArray;
  3. import org.slf4j.LoggerFactory;
  4. import java.util.concurrent.ConcurrentHashMap;
  5. import static spark.Spark.*;
  6. public class WebServer {
  7. private final static org.slf4j.Logger logger = LoggerFactory.getLogger(WebServer.class);
  8. private final int port;
  9. private int nextID = 1;
  10. private ConcurrentHashMap<Integer, Transfer> uploads = new ConcurrentHashMap<>();
  11. public WebServer(int port, boolean debug) {
  12. this.port = port;
  13. }
  14. public void start() {
  15. port(port);
  16. staticFiles.location("/webroot");
  17. get("/zero", (req, res) -> {
  18. var os = res.raw().getOutputStream();
  19. var ba = new byte[1024];
  20. while (true)
  21. os.write(ba);
  22. });
  23. post("/null", (req, res) -> {
  24. var is = req.raw().getInputStream();
  25. var ba = new byte[1024];
  26. while (true)
  27. is.read(ba);
  28. });
  29. get("/status", (req, res) -> {
  30. JsonArray ja = new JsonArray();
  31. for (Transfer t : uploads.values())
  32. ja.add(t.toJSON());
  33. res.header("Content-Type", "application/json");
  34. return ja.toString();
  35. });
  36. post("/xfer", (req, res) -> {
  37. try {
  38. Transfer t = new Transfer(nextID++);
  39. t.from = req.queryParams("from");
  40. t.to = req.queryParams("to");
  41. LoadTools.startTransfer(t);
  42. uploads.put(t.id, t);
  43. return "OK: " + t.id;
  44. }
  45. catch (Exception e) {
  46. return "FAILED: " + e.toString();
  47. }
  48. });
  49. }
  50. }