diff --git a/src/main/java/ru/itmo/ctlab/hict/hict_server/MainVerticle.java b/src/main/java/ru/itmo/ctlab/hict/hict_server/MainVerticle.java index f4125ec..c6316f4 100644 --- a/src/main/java/ru/itmo/ctlab/hict/hict_server/MainVerticle.java +++ b/src/main/java/ru/itmo/ctlab/hict/hict_server/MainVerticle.java @@ -34,6 +34,7 @@ import io.vertx.core.Promise; import io.vertx.core.Vertx; import io.vertx.core.http.HttpServerOptions; +import io.vertx.core.json.Json; import io.vertx.core.json.JsonArray; import io.vertx.core.json.JsonObject; import io.vertx.core.logging.SLF4JLogDelegateFactory; @@ -61,6 +62,7 @@ import java.nio.file.Path; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; @@ -187,8 +189,12 @@ public void start(final Promise startPromise) throws Exception { router.route().failureHandler(ctx -> { log.error("An exception was caught at router top-level", ctx.failure()); - ctx.response().end( - ctx.failure().getMessage()); + final var message = ctx.failure() != null && ctx.failure().getMessage() != null + ? ctx.failure().getMessage() + : "Request failed"; + ctx.response() + .putHeader("content-type", "application/json") + .end(Json.encode(Map.of("error", message))); }); log.info("Configuring router"); diff --git a/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/fileop/FileOpHandlersHolder.java b/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/fileop/FileOpHandlersHolder.java index eb84614..517706f 100644 --- a/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/fileop/FileOpHandlersHolder.java +++ b/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/fileop/FileOpHandlersHolder.java @@ -94,7 +94,9 @@ public void addHandlersToRouter(final @NotNull Router router) { map.put("TileStatisticHolder", TileStatisticHolder.newDefaultStatisticHolder(chunkedFile.getResolutions().length)); - ctx.response().end(Json.encode(generateOpenFileResponse(chunkedFile))); + ctx.response() + .putHeader("content-type", "application/json") + .end(Json.encode(generateOpenFileResponse(chunkedFile))); }); router.post("/attach").blockingHandler(ctx -> { diff --git a/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/info/InfoHandlersHolder.java b/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/info/InfoHandlersHolder.java index 7b7c7f2..4e2b504 100644 --- a/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/info/InfoHandlersHolder.java +++ b/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/info/InfoHandlersHolder.java @@ -26,10 +26,13 @@ public void addHandlersToRouter(final @NotNull Router router) { router.get("/version").handler(ctx -> { final var version = readVersion(); final var webuiVersion = readWebUiVersion(); - ctx.response().setStatusCode(200).end(Json.encode(Map.of( - "version", version, - "webuiVersion", webuiVersion - ))); + ctx.response() + .putHeader("content-type", "application/json") + .setStatusCode(200) + .end(Json.encode(Map.of( + "version", version, + "webuiVersion", webuiVersion + ))); }); } diff --git a/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/tiles/TileHandlersHolder.java b/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/tiles/TileHandlersHolder.java index fa9d343..d3b9511 100644 --- a/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/tiles/TileHandlersHolder.java +++ b/src/main/java/ru/itmo/ctlab/hict/hict_server/handlers/tiles/TileHandlersHolder.java @@ -83,7 +83,10 @@ public void addHandlersToRouter(final @NotNull Router router) { return; } final var options = visualizationOptionsWrapper.getSimpleVisualizationOptions(); - ctx.response().setStatusCode(200).end(Json.encode(VisualizationOptionsDTO.fromEntity(options, chunkedFile))); + ctx.response() + .putHeader("content-type", "application/json") + .setStatusCode(200) + .end(Json.encode(VisualizationOptionsDTO.fromEntity(options, chunkedFile))); }); router.post("/get_visualization_options").blockingHandler(ctx -> { @@ -102,7 +105,10 @@ public void addHandlersToRouter(final @NotNull Router router) { return; } final var options = visualizationOptionsWrapper.getSimpleVisualizationOptions(); - ctx.response().setStatusCode(200).end(Json.encode(VisualizationOptionsDTO.fromEntity(options, chunkedFile))); + ctx.response() + .putHeader("content-type", "application/json") + .setStatusCode(200) + .end(Json.encode(VisualizationOptionsDTO.fromEntity(options, chunkedFile))); }); router.post("/tiles/reload").blockingHandler(ctx -> {