Search in sources :

Example 1 with ServerCacheControl

use of com.linecorp.armeria.common.ServerCacheControl in project zipkin by openzipkin.

the class ZipkinUiConfiguration method uiServerConfigurator.

@Bean
ArmeriaServerConfigurator uiServerConfigurator(HttpService indexService, Optional<MeterRegistry> meterRegistry) throws IOException {
    ServerCacheControl maxAgeYear = ServerCacheControl.builder().maxAgeSeconds(TimeUnit.DAYS.toSeconds(365)).build();
    HttpService uiFileService = FileService.builder(getClass().getClassLoader(), "zipkin-lens").cacheControl(maxAgeYear).build();
    String config = writeConfig(ui);
    return sb -> {
        sb.service("/zipkin/config.json", HttpFile.builder(HttpData.ofUtf8(config)).cacheControl(ServerCacheControl.builder().maxAgeSeconds(600).build()).contentType(MediaType.JSON_UTF_8).build().asService());
        sb.serviceUnder("/zipkin/", uiFileService);
        // TODO This approach requires maintenance when new UI routes are added. Change to the following:
        // If the path is a a file w/an extension, treat normally.
        // Otherwise instead of returning 404, forward to the index.
        // See https://github.com/twitter/finatra/blob/458c6b639c3afb4e29873d123125eeeb2b02e2cd/http/src/main/scala/com/twitter/finatra/http/response/ResponseBuilder.scala#L321
        sb.service("/zipkin/", indexService).service("/zipkin/index.html", indexService).service("/zipkin/traces/{id}", indexService).service("/zipkin/dependency", indexService).service("/zipkin/traceViewer", indexService);
        sb.service("/favicon.ico", new RedirectService(HttpStatus.FOUND, "/zipkin/favicon.ico")).service("/", new RedirectService(HttpStatus.FOUND, "/zipkin/")).service("/zipkin", new RedirectService(HttpStatus.FOUND, "/zipkin/"));
        // don't add metrics for favicon
        meterRegistry.ifPresent(m -> m.config().meterFilter(MeterFilter.deny(id -> {
            String uri = id.getTag("uri");
            return uri != null && uri.startsWith("/favicon.ico");
        })));
    };
}
Also used : MeterFilter(io.micrometer.core.instrument.config.MeterFilter) ArmeriaServerConfigurator(com.linecorp.armeria.spring.ArmeriaServerConfigurator) JsonGenerator(com.fasterxml.jackson.core.JsonGenerator) FileService(com.linecorp.armeria.server.file.FileService) Autowired(org.springframework.beans.factory.annotation.Autowired) DEFAULT_BASEPATH(zipkin2.server.internal.ui.ZipkinUiProperties.DEFAULT_BASEPATH) MediaType(com.linecorp.armeria.common.MediaType) HttpFile(com.linecorp.armeria.server.file.HttpFile) Value(org.springframework.beans.factory.annotation.Value) HttpStatus(com.linecorp.armeria.common.HttpStatus) BeanCreationException(org.springframework.beans.factory.BeanCreationException) EnableConfigurationProperties(org.springframework.boot.context.properties.EnableConfigurationProperties) HttpService(com.linecorp.armeria.server.HttpService) ConditionalOnProperty(org.springframework.boot.autoconfigure.condition.ConditionalOnProperty) Resource(org.springframework.core.io.Resource) HttpData(com.linecorp.armeria.common.HttpData) StreamUtils(org.springframework.util.StreamUtils) ServerCacheControl(com.linecorp.armeria.common.ServerCacheControl) UTF_8(java.nio.charset.StandardCharsets.UTF_8) RedirectService(com.linecorp.armeria.server.RedirectService) StringWriter(java.io.StringWriter) IOException(java.io.IOException) TimeUnit(java.util.concurrent.TimeUnit) MeterRegistry(io.micrometer.core.instrument.MeterRegistry) JsonUtil(zipkin2.server.internal.JsonUtil) Optional(java.util.Optional) Bean(org.springframework.context.annotation.Bean) InputStream(java.io.InputStream) HttpService(com.linecorp.armeria.server.HttpService) RedirectService(com.linecorp.armeria.server.RedirectService) ServerCacheControl(com.linecorp.armeria.common.ServerCacheControl) Bean(org.springframework.context.annotation.Bean)

Example 2 with ServerCacheControl

use of com.linecorp.armeria.common.ServerCacheControl in project zipkin by openzipkin.

the class ZipkinUiConfiguration method maybeIndexService.

static HttpService maybeIndexService(String basePath, Resource resource) throws IOException {
    String maybeContent = maybeResource(basePath, resource);
    if (maybeContent == null)
        return null;
    ServerCacheControl maxAgeMinute = ServerCacheControl.builder().maxAgeSeconds(60).build();
    return HttpFile.builder(HttpData.ofUtf8(maybeContent)).contentType(MediaType.HTML_UTF_8).cacheControl(maxAgeMinute).build().asService();
}
Also used : ServerCacheControl(com.linecorp.armeria.common.ServerCacheControl)

Aggregations

ServerCacheControl (com.linecorp.armeria.common.ServerCacheControl)2 JsonGenerator (com.fasterxml.jackson.core.JsonGenerator)1 HttpData (com.linecorp.armeria.common.HttpData)1 HttpStatus (com.linecorp.armeria.common.HttpStatus)1 MediaType (com.linecorp.armeria.common.MediaType)1 HttpService (com.linecorp.armeria.server.HttpService)1 RedirectService (com.linecorp.armeria.server.RedirectService)1 FileService (com.linecorp.armeria.server.file.FileService)1 HttpFile (com.linecorp.armeria.server.file.HttpFile)1 ArmeriaServerConfigurator (com.linecorp.armeria.spring.ArmeriaServerConfigurator)1 MeterRegistry (io.micrometer.core.instrument.MeterRegistry)1 MeterFilter (io.micrometer.core.instrument.config.MeterFilter)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 StringWriter (java.io.StringWriter)1 UTF_8 (java.nio.charset.StandardCharsets.UTF_8)1 Optional (java.util.Optional)1 TimeUnit (java.util.concurrent.TimeUnit)1 BeanCreationException (org.springframework.beans.factory.BeanCreationException)1 Autowired (org.springframework.beans.factory.annotation.Autowired)1