withPrecompressedMediaTypeSupport

Signature

def withPrecompressedMediaTypeSupport: Directive0 

Description

Inspects the response entity and adds a Content-Encoding: gzip response header if the entity’s media-type is precompressed with gzip and no Content-Encoding header is present yet.

Example

Scala
sourceval svgz = compress("<svg/>", Coders.Gzip)
val route =
  withPrecompressedMediaTypeSupport {
    complete(HttpResponse(entity = HttpEntity(`image/svgz`, svgz)))
  }

// tests:
Get("/") ~> route ~> check {
  header[`Content-Encoding`] shouldEqual Some(`Content-Encoding`(gzip))
  mediaType shouldEqual `image/svg+xml`
}
Java
sourceimport static org.apache.pekko.http.javadsl.server.Directives.complete;
import static org.apache.pekko.http.javadsl.server.Directives.withPrecompressedMediaTypeSupport;

final ByteString svgz = Coder.Gzip.encode(ByteString.fromString("<svg/>"));

final Route route =
    withPrecompressedMediaTypeSupport(
        () ->
            complete(
                HttpResponse.create()
                    .withEntity(
                        HttpEntities.create(MediaTypes.IMAGE_SVGZ.toContentType(), svgz))));

// tests:
testRoute(route)
    .run(HttpRequest.GET("/"))
    .assertMediaType(MediaTypes.IMAGE_SVG_XML)
    .assertHeaderExists(ContentEncoding.create(HttpEncodings.GZIP));