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 6b54c6b2f762b2583a38d1103e923b90e5b1939d..3f0df5f586a4acf2b99e2c726ce0908f43949e8a 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,