From 4f6286845ddd0a540ebba8470fb50e0af5ab2648 Mon Sep 17 00:00:00 2001 From: Anthony Stirling <77850077+Frooodle@users.noreply.github.com> Date: Thu, 28 Dec 2023 22:52:53 +0000 Subject: [PATCH] Api fix --- .../software/SPDF/config/MetricsFilter.java | 5 +-- .../software/SPDF/config/OpenApiConfig.java | 33 ++++++++++++++----- .../controller/web/GeneralWebController.java | 2 +- .../controller/web/MetricsController.java | 12 +++++-- .../resources/templates/add-elements.html | 2 +- 5 files changed, 36 insertions(+), 18 deletions(-) diff --git a/src/main/java/stirling/software/SPDF/config/MetricsFilter.java b/src/main/java/stirling/software/SPDF/config/MetricsFilter.java index 6ee59db70..859c9c501 100644 --- a/src/main/java/stirling/software/SPDF/config/MetricsFilter.java +++ b/src/main/java/stirling/software/SPDF/config/MetricsFilter.java @@ -27,17 +27,14 @@ public class MetricsFilter extends OncePerRequestFilter { protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String uri = request.getRequestURI(); - - //System.out.println("uri="+uri + ", method=" + request.getMethod() ); // Ignore static resources - if (!(uri.startsWith("/js") || uri.startsWith("api-docs") || uri.endsWith("robots.txt") || uri.startsWith("/images") || uri.endsWith(".png") || uri.endsWith(".ico") || uri.endsWith(".css") || uri.endsWith(".svg")|| uri.endsWith(".js") || uri.contains("swagger") || uri.startsWith("/api"))) { + if (!(uri.startsWith("/api/v1/info") || uri.startsWith("/js") || uri.startsWith("api-docs") || uri.endsWith("robots.txt") || uri.startsWith("/images") || uri.endsWith(".png") || uri.endsWith(".ico") || uri.endsWith(".css") || uri.endsWith(".svg")|| uri.endsWith(".js") || uri.contains("swagger"))) { Counter counter = Counter.builder("http.requests") .tag("uri", uri) .tag("method", request.getMethod()) .register(meterRegistry); counter.increment(); - //System.out.println("Counted"); } filterChain.doFilter(request, response); diff --git a/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java b/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java index 2583277e3..1316792c8 100644 --- a/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java +++ b/src/main/java/stirling/software/SPDF/config/OpenApiConfig.java @@ -1,27 +1,42 @@ package stirling.software.SPDF.config; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.security.SecurityRequirement; +import io.swagger.v3.oas.models.security.SecurityScheme; +import stirling.software.SPDF.model.ApplicationProperties; @Configuration public class OpenApiConfig { + @Autowired + ApplicationProperties applicationProperties; + @Bean public OpenAPI customOpenAPI() { - String version = getClass().getPackage().getImplementationVersion(); - if (version == null) { - - version = "1.0.0"; // default version if all else fails - - } + String version = getClass().getPackage().getImplementationVersion(); + if (version == null) { + version = "1.0.0"; // default version if all else fails + } + + SecurityScheme apiKeyScheme = new SecurityScheme().type(SecurityScheme.Type.APIKEY).in(SecurityScheme.In.HEADER) + .name("X-API-KEY"); + if (!applicationProperties.getSecurity().getEnableLogin()) { + return new OpenAPI().components(new Components()) + .info(new Info().title("Stirling PDF API").version(version).description( + "API documentation for all Server-Side processing.\nPlease note some functionality might be UI only and missing from here.")); + } else { + return new OpenAPI().components(new Components().addSecuritySchemes("apiKey", apiKeyScheme)) + .info(new Info().title("Stirling PDF API").version(version).description( + "API documentation for all Server-Side processing.\nPlease note some functionality might be UI only and missing from here.")) + .addSecurityItem(new SecurityRequirement().addList("apiKey")); + } - return new OpenAPI().components(new Components()).info( - new Info().title("Stirling PDF API").version(version).description("API documentation for all Server-Side processing.\nPlease note some functionality might be UI only and missing from here.")); } - } diff --git a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java index 77bae9b41..1542b7ac0 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/GeneralWebController.java @@ -157,7 +157,7 @@ public class GeneralWebController { @GetMapping("/add-elements") @Hidden public String addElements(Model model) { - model.addAttribute("currentPage", "sign"); + model.addAttribute("currentPage", "add-elements"); model.addAttribute("fonts", getFontNames()); return "add-elements"; } diff --git a/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java b/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java index 9dc4f2b76..e87a9495a 100644 --- a/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java +++ b/src/main/java/stirling/software/SPDF/controller/web/MetricsController.java @@ -27,8 +27,8 @@ import stirling.software.SPDF.config.StartupApplicationListener; import stirling.software.SPDF.model.ApplicationProperties; @RestController -@RequestMapping("/api/v1") -@Tag(name = "API", description = "Info APIs") +@RequestMapping("/api/v1/info") +@Tag(name = "Info", description = "Info APIs") public class MetricsController { @@ -181,6 +181,7 @@ public class MetricsController { for (Meter meter : meterRegistry.getMeters()) { if (meter.getId().getName().equals("http.requests")) { String method = meter.getId().getTag("method"); + System.out.println("method=" + method + ", endpont=" + endpoint.get()); if (method != null && method.equals("POST")) { if (endpoint.isPresent() && !endpoint.get().isBlank()) { if (!endpoint.get().startsWith("/")) { @@ -217,10 +218,15 @@ public class MetricsController { Map counts = new HashMap<>(); for (Meter meter : meterRegistry.getMeters()) { + + System.out.println("meter.getId().getName()=" + meter.getId().getName()); if (meter.getId().getName().equals("http.requests")) { String method = meter.getId().getTag("method"); + System.out.println("method=" + method ); if (method != null && method.equals("POST")) { - String uri = meter.getId().getTag("uri"); + String uri = meter.getId().getTag("uri"); + System.out.println("method=" + method + ", endpont=" + meter.getId()); + if (uri != null) { double currentCount = counts.getOrDefault(uri, 0.0); if (meter instanceof Counter) { diff --git a/src/main/resources/templates/add-elements.html b/src/main/resources/templates/add-elements.html index 7d0d07885..69afec0ac 100644 --- a/src/main/resources/templates/add-elements.html +++ b/src/main/resources/templates/add-elements.html @@ -182,7 +182,7 @@