From 35aca96d6d2b04c127be46d800324990b462724d Mon Sep 17 00:00:00 2001 From: Brandon Clayton <bclayton@usgs.gov> Date: Thu, 10 Jun 2021 10:47:45 -0600 Subject: [PATCH] add context path cookie --- .../nshmp/www/ContextPathCookie.java | 39 +++++++++++++++++++ .../nshmp/www/services/ServicesUtil.java | 4 +- 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 src/main/java/gov/usgs/earthquake/nshmp/www/ContextPathCookie.java diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/ContextPathCookie.java b/src/main/java/gov/usgs/earthquake/nshmp/www/ContextPathCookie.java new file mode 100644 index 000000000..dcdf890cb --- /dev/null +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/ContextPathCookie.java @@ -0,0 +1,39 @@ +package gov.usgs.earthquake.nshmp.www; + +import java.time.Duration; + +import org.reactivestreams.Publisher; + +import io.micronaut.context.annotation.Requires; +import io.micronaut.context.annotation.Value; +import io.micronaut.core.async.publisher.Publishers; +import io.micronaut.http.HttpMethod; +import io.micronaut.http.HttpRequest; +import io.micronaut.http.MutableHttpResponse; +import io.micronaut.http.annotation.Filter; +import io.micronaut.http.cookie.Cookie; +import io.micronaut.http.filter.HttpServerFilter; +import io.micronaut.http.filter.ServerFilterChain; + +/** + * Add context path as a cookie for Swagger to use. + * + * @author U.S. Geological Survey + */ +@Requires(property = "micronaut.server.context-path") +@Filter(methods = { HttpMethod.GET, HttpMethod.HEAD }, + patterns = { "/**" }) +public class ContextPathCookie implements HttpServerFilter { + private final Cookie contextPathCookie; + + ContextPathCookie(@Value("${micronaut.server.context-path}") String contextPath) { + this.contextPathCookie = Cookie.of("contextPath", contextPath).maxAge(Duration.ofMinutes(2L)); + } + + @Override + public Publisher<MutableHttpResponse<?>> doFilter(HttpRequest<?> request, + ServerFilterChain chain) { + return Publishers.map(chain.proceed(request), response -> response.cookie(contextPathCookie)); + } + +} diff --git a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java index 855475286..064864558 100644 --- a/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java +++ b/src/main/java/gov/usgs/earthquake/nshmp/www/services/ServicesUtil.java @@ -19,9 +19,9 @@ import gov.usgs.earthquake.nshmp.www.meta.Status; import io.micronaut.http.HttpResponse; -class ServicesUtil { +public class ServicesUtil { - static HttpResponse<String> handleError( + public static HttpResponse<String> handleError( Throwable e, String name, String url) { -- GitLab