createCompressionMiddleware function

Middleware createCompressionMiddleware({
  1. APIResponseCompression compression = const APIResponseCompression(),
  2. APIResponseCompression resolveCompression(
    1. Request request,
    2. Response response
    )?,
  3. bool addCompressionRatioHeader = true,
  4. bool addServerTiming = true,
})

A Middleware that compresses the responses using compressResponse.

If resolveCompression is provided, it chooses the compression of each response (e.g., a higher quality for responses that will be cached), otherwise compression is used.

Implementation

Middleware createCompressionMiddleware({
  APIResponseCompression compression = const APIResponseCompression(),
  APIResponseCompression Function(Request request, Response response)?
  resolveCompression,
  bool addCompressionRatioHeader = true,
  bool addServerTiming = true,
}) {
  return (innerHandler) {
    return (request) {
      return Future.sync(() => innerHandler(request)).then(
        (response) => compressResponse(
          request,
          response,
          compression: resolveCompression != null
              ? resolveCompression(request, response)
              : compression,
          addCompressionRatioHeader: addCompressionRatioHeader,
          addServerTiming: addServerTiming,
        ),
      );
    };
  };
}