X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/a780be70dd98679b732baa9ef0a4645126d31b08..3027ba2cf1727abc6d007b9ed0ecf678dbe62bc6:/src/main/java/org/asamk/signal/http/HttpServerHandler.java diff --git a/src/main/java/org/asamk/signal/http/HttpServerHandler.java b/src/main/java/org/asamk/signal/http/HttpServerHandler.java index f7f2768d..4d13e22c 100644 --- a/src/main/java/org/asamk/signal/http/HttpServerHandler.java +++ b/src/main/java/org/asamk/signal/http/HttpServerHandler.java @@ -13,7 +13,6 @@ import org.asamk.signal.jsonrpc.SignalJsonRpcCommandHandler; import org.asamk.signal.manager.Manager; import org.asamk.signal.manager.MultiAccountManager; import org.asamk.signal.manager.api.Pair; -import org.asamk.signal.manager.util.Utils; import org.asamk.signal.util.Util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,10 +54,11 @@ public class HttpServerHandler { logger.info("Starting server on " + address.toString()); final var server = HttpServer.create(address, 0); - server.setExecutor(Executors.newFixedThreadPool(10)); + server.setExecutor(Executors.newCachedThreadPool()); server.createContext("/api/v1/rpc", this::handleRpcEndpoint); server.createContext("/api/v1/events", this::handleEventsEndpoint); + server.createContext("/api/v1/check", this::handleCheckEndpoint); server.start(); } @@ -88,7 +88,8 @@ public class HttpServerHandler { return; } - if (!"application/json".equals(httpExchange.getRequestHeaders().getFirst("Content-Type"))) { + final var contentType = httpExchange.getRequestHeaders().getFirst("Content-Type"); + if (contentType == null || !contentType.startsWith("application/json")) { sendResponse(415, null, httpExchange); return; } @@ -136,7 +137,7 @@ public class HttpServerHandler { try { final var queryString = httpExchange.getRequestURI().getQuery(); - final var query = queryString == null ? Map.of() : Utils.getQueryMap(queryString); + final var query = queryString == null ? Map.of() : Util.getQueryMap(queryString); List managers = getManagerFromQuery(query); if (managers == null) { @@ -186,6 +187,19 @@ public class HttpServerHandler { } } + private void handleCheckEndpoint(HttpExchange httpExchange) throws IOException { + if (!"/api/v1/check".equals(httpExchange.getRequestURI().getPath())) { + sendResponse(404, null, httpExchange); + return; + } + if (!"GET".equals(httpExchange.getRequestMethod())) { + sendResponse(405, null, httpExchange); + return; + } + + sendResponse(200, null, httpExchange); + } + private List getManagerFromQuery(final Map query) { List managers; if (m != null) {