Skip to content

Commit

Permalink
[swagger-ui] enable cors and rewrite properly the url in swagger-ui d…
Browse files Browse the repository at this point in the history
…oc page
  • Loading branch information
rmannibucau committed Apr 3, 2024
1 parent 022c6fe commit 0ac52ab
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package io.yupiik.fusion.examples.backend.server;

import io.yupiik.fusion.framework.api.scope.DefaultScoped;
import io.yupiik.fusion.framework.build.api.event.OnEvent;
import io.yupiik.fusion.framework.build.api.order.Order;
import io.yupiik.fusion.http.server.api.WebServer;
import io.yupiik.fusion.http.server.impl.tomcat.TomcatWebServerConfiguration;
import jakarta.servlet.FilterRegistration;
import jakarta.servlet.ServletContainerInitializer;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import org.apache.catalina.core.StandardContext;
import org.apache.catalina.filters.CorsFilter;

import java.util.EnumSet;
import java.util.Set;
import java.util.stream.Stream;

import static jakarta.servlet.DispatcherType.REQUEST;
import static org.apache.catalina.filters.CorsFilter.PARAM_CORS_ALLOWED_ORIGINS;

// just for swagger tests/demo
@DefaultScoped
public class Cors {
protected void onStart(@OnEvent @Order(20_000) final WebServer.Configuration configuration) {
final var tomcatConf = configuration.unwrap(TomcatWebServerConfiguration.class);
tomcatConf.setContextCustomizers(
Stream.concat(
tomcatConf.getContextCustomizers().stream(),
Stream.of(this::addCors))
.toList());
}

private void addCors(final StandardContext context) {
context.addServletContainerInitializer((set, servletContext) -> {
final var filter = servletContext.addFilter("cors", CorsFilter.class);
filter.setInitParameter(PARAM_CORS_ALLOWED_ORIGINS, "*");
filter.setAsyncSupported(true);
filter.addMappingForUrlPatterns(EnumSet.of(REQUEST), true, "/jsonrpc");
}, Set.of());
}
}
9 changes: 9 additions & 0 deletions app-documentation/minisite/content/swagger-ui.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,15 @@ SwaggerUIBundle({
plugins: [
SwaggerUIBundle.plugins.DownloadUrl,
],
requestInterceptor: function (request) {
if (request.loadSpec) {
return request;
}
var sep = request.url.lastIndexOf('/');
var method = request.url.substring(sep + 1);
return Object.assign(request, { url: request.url.substring(0, sep) });
},
});
</script>
++++

0 comments on commit 0ac52ab

Please sign in to comment.