use of io.micronaut.http.annotation.Filter in project akhq by tchiotludo.
the class StaticFilter method doFilter.
@Override
public Publisher<MutableHttpResponse<?>> doFilter(HttpRequest<?> request, ServerFilterChain chain) {
return Publishers.map(chain.proceed(request), response -> {
boolean first = response.getBody(NettyStreamedFileCustomizableResponseType.class).filter(n -> n.getMediaType().getName().equals(MediaType.TEXT_HTML)).isPresent();
boolean second = response.getBody(NettySystemFileCustomizableResponseType.class).filter(n -> n.getFile().getAbsoluteFile().toString().endsWith("ui/index.html")).isPresent();
if (first || second) {
try {
InputStream inputStream = Objects.requireNonNull(StaticFilter.class.getClassLoader().getResourceAsStream("ui/index.html"));
String content;
try (Reader reader = new InputStreamReader(inputStream)) {
content = CharStreams.toString(reader);
}
String finalBody = replace(content);
return HttpResponse.<String>ok().body(finalBody).contentType(MediaType.TEXT_HTML).contentLength(finalBody.length());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
return response;
});
}
use of io.micronaut.http.annotation.Filter in project micronaut-core by micronaut-projects.
the class DefaultHttpClientFilterResolver method resolveFilterEntries.
@Override
public List<FilterEntry<HttpClientFilter>> resolveFilterEntries(ClientFilterResolutionContext context) {
return clientFilters.stream().map(httpClientFilter -> {
AnnotationMetadata annotationMetadata = annotationMetadataResolver.resolveMetadata(httpClientFilter);
HttpMethod[] methods = annotationMetadata.enumValues(Filter.class, "methods", HttpMethod.class);
FilterPatternStyle patternStyle = annotationMetadata.enumValue(Filter.class, "patternStyle", FilterPatternStyle.class).orElse(FilterPatternStyle.ANT);
final Set<HttpMethod> httpMethods = new HashSet<>(Arrays.asList(methods));
if (annotationMetadata.hasStereotype(FilterMatcher.class)) {
httpMethods.addAll(Arrays.asList(annotationMetadata.enumValues(FilterMatcher.class, "methods", HttpMethod.class)));
}
return FilterEntry.of(httpClientFilter, annotationMetadata, httpMethods, patternStyle, annotationMetadata.stringValues(Filter.class));
}).filter(entry -> {
AnnotationMetadata annotationMetadata = entry.getAnnotationMetadata();
boolean matches = !annotationMetadata.hasStereotype(FilterMatcher.class);
String filterAnnotation = annotationMetadata.getAnnotationNameByStereotype(FilterMatcher.class).orElse(null);
if (filterAnnotation != null && !matches) {
matches = context.getAnnotationMetadata().hasStereotype(filterAnnotation);
}
if (matches) {
String[] clients = annotationMetadata.stringValues(Filter.class, "serviceId");
boolean hasClients = ArrayUtils.isNotEmpty(clients);
if (hasClients) {
matches = containsIdentifier(context.getClientIds(), clients);
}
}
return matches;
}).collect(Collectors.toList());
}
Aggregations