@Filter("/**") public class CorsFilter implements HttpServerFilter {
@Filter("/story/**") public class StoryClientFilter implements HttpClientFilter { private Map<String, Object> attributes; @Override public Publisher<? extends HttpResponse<?>> doFilter(MutableHttpRequest<?> request, ClientFilterChain chain) { attributes = request.getAttributes().asMap(); return chain.proceed(request); } /** * strictly for unit testing */ Map<String, Object> getLatestRequestAttributes() { return new HashMap<>(attributes); } }
/** * A filter that instruments the request with the {@link io.micronaut.http.context.ServerRequestContext}. * * @author graemerocher * @since 1.0 */ @Filter("/**") @Internal public final class ServerRequestContextFilter implements HttpServerFilter { @Override public Publisher<MutableHttpResponse<?>> doFilter(HttpRequest<?> request, ServerFilterChain chain) { return ServerRequestContext.with(request, (Supplier<Publisher<MutableHttpResponse<?>>>) () -> new ServerRequestTracingPublisher(request, chain.proceed(request)) ); } }
/** * @author Graeme Rocher * @since 1.0 */ @Filter("/secure**") public class SecondFilter implements HttpFilter { @Override public int getOrder() { return TestSecurityFilter.POSITION + 100; } @Override public Publisher<? extends HttpResponse<?>> doFilter(HttpRequest<?> request, FilterChain chain) { MutableConvertibleValues<Object> attributes = request.getAttributes(); Assert.that(attributes.contains("first")); Assert.that(!attributes.contains("second")); Assert.that(attributes.contains("authenticated")); attributes.put("second", true); return chain.proceed(request); } }
/** * @author Graeme Rocher * @since 1.0 */ @Filter("/secure**") public class FirstFilter implements HttpFilter { @Override public int getOrder() { return TestSecurityFilter.POSITION - 100; } @Override public Publisher<? extends HttpResponse<?>> doFilter(HttpRequest<?> request, FilterChain chain) { request.getAttributes().put("first", true); Assert.that(!request.getAttributes().contains("authenticated")); Publisher<? extends HttpResponse<?>> publisher = chain.proceed(request); return Publishers.then(publisher, httpResponse -> { httpResponse.getHeaders(); }); } }
/** * @author Graeme Rocher * @since 1.0 */ @Filter("/secure**") public class TestReactiveFilter implements HttpServerFilter{ @Override public int getOrder() { return TestSecurityFilter.POSITION - 10; } @Override public Publisher<MutableHttpResponse<?>> doFilter(HttpRequest<?> request, ServerFilterChain chain) { SomeService someService = new SomeService(); return someService .getSomething() .switchMap(s -> { request.getAttributes().put("SomeServiceValue", s); return chain.proceed(request); }); } class SomeService { Flowable<String> getSomething() { return Flowable.just("Test"); } } }
@Filter("/secure**") public class TestSecurityFilter implements HttpServerFilter {
@Filter(patterns = "/v1/**", serviceId = ConsulClient.SERVICE_ID) @Requires(beans = ConsulConfiguration.class) public class ConsulAslTokenFilter implements HttpClientFilter, Toggleable {
@Filter("/**") public class JsonViewServerFilter implements HttpServerFilter {
@Filter("/**") public class ResponseEntityServerFilter extends OncePerRequestHttpServerFilter { @Override
@Filter("/**") public class CorsFilter implements HttpServerFilter {
/** * A filter that instruments the request with the {@link io.micronaut.http.context.ServerRequestContext}. * * @author graemerocher * @since 1.0 */ @Filter("/**") @Internal public final class ServerRequestContextFilter implements HttpServerFilter { @Override public Publisher<MutableHttpResponse<?>> doFilter(HttpRequest<?> request, ServerFilterChain chain) { return ServerRequestContext.with(request, (Supplier<Publisher<MutableHttpResponse<?>>>) () -> new ServerRequestTracingPublisher(request, chain.proceed(request)) ); } }
@Filter("${" + PATH + ":/}**") public class EndpointsFilter extends OncePerRequestHttpServerFilter {
@Filter("${" + PATH + ":/}**") public class EndpointsFilter extends OncePerRequestHttpServerFilter {
@Filter(HealthResultFilter.DEFAULT_MAPPING) @Requires(beans = HealthEndpoint.class) public class HealthResultFilter extends OncePerRequestHttpServerFilter {
@Filter(HealthResultFilter.DEFAULT_MAPPING) @Requires(beans = HealthEndpoint.class) public class HealthResultFilter extends OncePerRequestHttpServerFilter {
@Filter("/**") @Requires(classes = {ModelAndView.class, Model.class}) @Requires(beans = ViewsRenderer.class)