123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package com.acdp.transceivr;
- import com.eclipsesource.json.JsonArray;
- import org.slf4j.LoggerFactory;
- import java.util.concurrent.ConcurrentHashMap;
- import static spark.Spark.*;
- public class WebServer {
- private final static org.slf4j.Logger logger = LoggerFactory.getLogger(WebServer.class);
- private final int port;
- private int nextID = 1;
- private ConcurrentHashMap<Integer, Transfer> uploads = new ConcurrentHashMap<>();
- public WebServer(int port) {
- this.port = port;
- }
- public void start() {
- port(port);
- staticFiles.location("/webroot");
- get("/zero", (req, res) -> {
- var os = res.raw().getOutputStream();
- var ba = new byte[1024];
- while (true)
- os.write(ba);
- });
- post("/null", (req, res) -> {
- var is = req.raw().getInputStream();
- var ba = new byte[1024];
- while (true)
- is.read(ba);
- });
- post("/cancel", (req, res) -> {
- int id = Integer.parseInt(req.queryParams("id"));
- var t=uploads.get(id);
- t.canceled=true;
- t.call.cancel();
- return "OK";
- });
- get("/status", (req, res) -> {
- JsonArray ja = new JsonArray();
- for (Transfer t : uploads.values())
- ja.add(t.toJSON());
- res.header("Content-Type", "application/json");
- return ja.toString();
- });
- post("/xfer", (req, res) -> {
- try {
- Transfer t = new Transfer(nextID++);
- t.from = req.queryParams("from");
- t.to = req.queryParams("to");
- LoadTools.startTransfer(t);
- uploads.put(t.id, t);
- return "OK: " + t.id;
- }
- catch (Exception e) {
- return "FAILED: " + e.toString();
- }
- });
- }
- }
|