public boolean shouldFilter()

in zuul-core/src/main/java/com/netflix/zuul/filters/common/GZipResponseFilter.java [66:96]


    public boolean shouldFilter(HttpResponseMessage response) {
        if (!ENABLED.get() || !response.hasBody() || response.getContext().isInBrownoutMode()) {
            return false;
        }

        if (response.getContext().get(CommonContextKeys.GZIPPER) != null) {
            return true;
        }

        // A flag on SessionContext can be set to override normal mechanism of checking if client accepts gzip.;
        HttpRequestInfo request = response.getInboundRequest();
        Boolean overrideIsGzipRequested =
                (Boolean) response.getContext().get(CommonContextKeys.OVERRIDE_GZIP_REQUESTED);
        boolean isGzipRequested = (overrideIsGzipRequested == null)
                ? HttpUtils.acceptsGzip(request.getHeaders())
                : overrideIsGzipRequested;

        // Check the headers to see if response is already gzipped.
        Headers respHeaders = response.getHeaders();
        boolean isResponseCompressed = HttpUtils.isCompressed(respHeaders);

        // Decide what to do.;
        boolean shouldGzip = isGzippableContentType(response)
                && isGzipRequested
                && !isResponseCompressed
                && isRightSizeForGzip(response);
        if (shouldGzip) {
            response.getContext().set(CommonContextKeys.GZIPPER, getGzipper());
        }
        return shouldGzip;
    }