@Override public HttpHeaders getResponseHeaders() { HttpHeaders headers = (this.original instanceof HttpResource ? ((HttpResource) this.original).getResponseHeaders() : new HttpHeaders()); headers.add(HttpHeaders.CONTENT_ENCODING, "gzip"); headers.add(HttpHeaders.VARY, HttpHeaders.ACCEPT_ENCODING); return headers; } }
@Override public HttpHeaders getResponseHeaders() { HttpHeaders headers; if (this.original instanceof HttpResource) { headers = ((HttpResource) this.original).getResponseHeaders(); } else { headers = new HttpHeaders(); } headers.add(HttpHeaders.CONTENT_ENCODING, this.coding); headers.add(HttpHeaders.VARY, HttpHeaders.ACCEPT_ENCODING); return headers; } }
@Override public HttpHeaders getResponseHeaders() { HttpHeaders headers = (this.original instanceof HttpResource ? ((HttpResource) this.original).getResponseHeaders() : new HttpHeaders()); headers.setETag("\"" + this.version + "\""); return headers; } }
/** * Set headers on the response. Called for both GET and HEAD requests. * @param exchange current exchange * @param resource the identified resource (never {@code null}) * @param mediaType the resource's media type (never {@code null}) */ protected void setHeaders(ServerWebExchange exchange, Resource resource, @Nullable MediaType mediaType) throws IOException { HttpHeaders headers = exchange.getResponse().getHeaders(); long length = resource.contentLength(); headers.setContentLength(length); if (mediaType != null) { headers.setContentType(mediaType); } if (resource instanceof HttpResource) { HttpHeaders resourceHeaders = ((HttpResource) resource).getResponseHeaders(); exchange.getResponse().getHeaders().putAll(resourceHeaders); } }
@Test public void resolveResourceSuccess() { String versionFile = "bar-version.css"; String version = "version"; String file = "bar.css"; Resource expected = new ClassPathResource("test/" + file, getClass()); MockServerHttpRequest request = MockServerHttpRequest.get("/resources/bar-version.css").build(); ServerWebExchange exchange = MockServerWebExchange.from(request); given(this.chain.resolveResource(exchange, versionFile, this.locations)).willReturn(Mono.empty()); given(this.chain.resolveResource(exchange, file, this.locations)).willReturn(Mono.just(expected)); given(this.versionStrategy.extractVersion(versionFile)).willReturn(version); given(this.versionStrategy.removeVersion(versionFile, version)).willReturn(file); given(this.versionStrategy.getResourceVersion(expected)).willReturn(Mono.just(version)); this.resolver.setStrategyMap(Collections.singletonMap("/**", this.versionStrategy)); Resource actual = this.resolver .resolveResourceInternal(exchange, versionFile, this.locations, this.chain) .block(Duration.ofMillis(5000)); assertEquals(expected.getFilename(), actual.getFilename()); verify(this.versionStrategy, times(1)).getResourceVersion(expected); assertThat(actual, instanceOf(HttpResource.class)); assertEquals("\"" + version + "\"", ((HttpResource)actual).getResponseHeaders().getETag()); }
@Test public void resolveGzipped() { MockServerWebExchange exchange = MockServerWebExchange.from( MockServerHttpRequest.get("").header("Accept-Encoding", "gzip")); String file = "js/foo.js"; Resource actual = this.resolver.resolveResource(exchange, file, this.locations).block(TIMEOUT); assertEquals(getResource(file + ".gz").getDescription(), actual.getDescription()); assertEquals(getResource(file).getFilename(), actual.getFilename()); assertTrue(actual instanceof HttpResource); HttpHeaders headers = ((HttpResource) actual).getResponseHeaders(); assertEquals("gzip", headers.getFirst(HttpHeaders.CONTENT_ENCODING)); assertEquals("Accept-Encoding", headers.getFirst(HttpHeaders.VARY)); }
@Override public HttpHeaders getResponseHeaders() { HttpHeaders headers; if(this.original instanceof HttpResource) { headers = ((HttpResource) this.original).getResponseHeaders(); } else { headers = new HttpHeaders(); } headers.add(HttpHeaders.CONTENT_ENCODING, "gzip"); return headers; } }
@Override public HttpHeaders getResponseHeaders() { HttpHeaders headers; if(this.original instanceof HttpResource) { headers = ((HttpResource) this.original).getResponseHeaders(); } else { headers = new HttpHeaders(); } headers.setETag("\"" + this.version + "\""); return headers; } }
/** * Set headers on the response. Called for both GET and HEAD requests. * @param exchange current exchange * @param resource the identified resource (never {@code null}) * @param mediaType the resource's media type (never {@code null}) */ protected void setHeaders(ServerWebExchange exchange, Resource resource, MediaType mediaType) throws IOException { HttpHeaders headers = exchange.getResponse().getHeaders(); long length = resource.contentLength(); headers.setContentLength(length); if (mediaType != null) { headers.setContentType(mediaType); } if (resource instanceof HttpResource) { HttpHeaders resourceHeaders = ((HttpResource) resource).getResponseHeaders(); exchange.getResponse().getHeaders().putAll(resourceHeaders); } }