Psr7Middlewares\Middleware\Gzip::__invoke PHP Метод

__invoke() публичный Метод

Execute the middleware.
public __invoke ( Psr\Http\Message\ServerRequestInterface $request, Psr\Http\Message\ResponseInterface $response, callable $next ) : Psr\Http\Message\ResponseInterface
$request Psr\Http\Message\ServerRequestInterface
$response Psr\Http\Message\ResponseInterface
$next callable
Результат Psr\Http\Message\ResponseInterface
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
    {
        if (!self::hasAttribute($request, EncodingNegotiator::KEY)) {
            throw new RuntimeException('Gzip middleware needs EncodingNegotiator executed before');
        }
        $response = $next($request, $response);
        $resolver = $this->resolver ?: new Transformers\Encoder();
        $encoding = EncodingNegotiator::getEncoding($request);
        $transformer = $resolver->resolve($encoding);
        if ($transformer) {
            $body = $response->getBody();
            return $response->withHeader('Content-Encoding', $encoding)->withBody($transformer($body, self::createStream($body)));
        }
        return $response;
    }