WebServer.java 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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("/hello", (req, res) -> "Hello World");
  18. get("/zero", (req, res) -> {
  19. var os = res.raw().getOutputStream();
  20. var ba = new byte[1024];
  21. while (true)
  22. os.write(ba);
  23. });
  24. post("/null", (req, res) -> {
  25. var is = req.raw().getInputStream();
  26. var ba = new byte[1024];
  27. while (true)
  28. is.read(ba);
  29. });
  30. get("/status", (req, res) -> {
  31. JsonArray ja = new JsonArray();
  32. for (Transfer t : uploads.values())
  33. ja.add(t.toJSON());
  34. res.header("Content-Type", "application/json");
  35. return ja.toString();
  36. });
  37. post("/xfer", (req, res) -> {
  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. }
  46. }