From 4d66ede5070b1182fdaa7e25985bfd15e5d48ae7 Mon Sep 17 00:00:00 2001
From: Brandon Clayton <bclayton@usgs.gov>
Date: Mon, 8 Apr 2024 11:59:49 -0600
Subject: [PATCH] handle swagger

---
 .../nshmp/www/SwaggerUIController.java        | 33 ++++++++++++++++---
 1 file changed, 29 insertions(+), 4 deletions(-)

diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerUIController.java b/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerUIController.java
index 6b54c6b..3f0df5f 100644
--- a/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerUIController.java
+++ b/src/main/java/gov/usgs/earthquake/nshmp/www/SwaggerUIController.java
@@ -9,6 +9,7 @@ import java.util.Optional;
 import org.apache.commons.io.IOUtils;
 
 import io.micronaut.core.io.scan.ClassPathResourceLoader;
+import io.micronaut.http.HttpResponse;
 import io.micronaut.http.MediaType;
 import io.micronaut.http.annotation.Controller;
 import io.micronaut.http.annotation.Get;
@@ -16,6 +17,7 @@ import io.micronaut.http.annotation.PathVariable;
 import io.micronaut.http.annotation.Produces;
 import io.swagger.v3.oas.annotations.Hidden;
 import jakarta.annotation.Nullable;
+import jakarta.inject.Inject;
 
 /**
  * Handle Swagger static resources.
@@ -26,6 +28,7 @@ import jakarta.annotation.Nullable;
         MediaType.APPLICATION_YAML,
         MediaType.TEXT_HTML,
         MediaType.IMAGE_PNG,
+        MediaType.TEXT_PLAIN,
         "font/woff",
         "font/woff2",
         "font/ttf",
@@ -41,16 +44,29 @@ public class SwaggerUIController {
     this.loader = loader;
   }
 
+  @Inject
+  private NshmpMicronautServlet servlet;
+
   @Get("{/path:.*}{.ext:png}")
-  @Produces(MediaType.IMAGE_PNG)
+  @Produces("image/png; charset=utf-8")
   @Hidden
-  public byte[] getSwaggerUiImage(
+  public byte[] getSwaggerPngImages(
       @PathVariable @Nullable String path,
       @PathVariable @Nullable String ext) throws IOException {
     Optional<URL> resource = loader.getResource(SWAGGER_UI_RESOURCE_LOCATION + path + "." + ext);
     return IOUtils.toByteArray(resource.orElseThrow().openStream());
   }
 
+  @Get("{/path:.*}{.ext:b4}")
+  @Produces(MediaType.TEXT_PLAIN)
+  @Hidden
+  public HttpResponse<String> getSwaggerBase64Images(
+      @PathVariable @Nullable String path,
+      @PathVariable @Nullable String ext) throws IOException {
+    return HttpResponse.ok(getResourceString(SWAGGER_UI_RESOURCE_LOCATION + path + "." + ext))
+        .contentType(MediaType.TEXT_PLAIN);
+  }
+
   @Get("{/path:.*}{.ext:css|js}")
   @Produces({ "text/css", "text/javascript" })
   @Hidden
@@ -69,8 +85,17 @@ public class SwaggerUIController {
     return getResourceString(SWAGGER_UI_RESOURCE_LOCATION + path + "." + ext);
   }
 
-  @Get("{/path:.*}{.ext:woff|woff2|ttf}")
-  @Produces({ "font/woff", "font/woff2", "font/ttf" })
+  @Get("{/path:.*}{.ext:eot}")
+  @Produces("application/vnd.ms-fontobject")
+  @Hidden
+  public String getSwaggerEotFont(
+      @PathVariable @Nullable String path,
+      @PathVariable @Nullable String ext) throws IOException {
+    return getResourceString(SWAGGER_UI_RESOURCE_LOCATION + path + "." + ext);
+  }
+
+  @Get("{/path:.*}{.ext:woff|woff2|ttf|otf}")
+  @Produces("font/*")
   @Hidden
   public String getSwaggerFont(
       @PathVariable @Nullable String path,
-- 
GitLab