Dshafik\GuzzleHttp\VcrHandler::__invoke PHP Method

__invoke() public method

Handle the request/response
public __invoke ( callable $handler ) : Closure
$handler callable
return Closure
    public function __invoke(callable $handler)
    {
        return function (\Psr\Http\Message\RequestInterface $request, array $config) use($handler) {
            return $handler($request, $config)->then(function (\Psr\Http\Message\ResponseInterface $response) use($request) {
                $responses = [];
                if (file_exists($this->cassette)) {
                    $responses = json_decode(file_get_contents($this->cassette), true);
                }
                $cassette = $response->withAddedHeader('X-VCR-Recording', time());
                $responses[] = ['status' => $cassette->getStatusCode(), 'headers' => $cassette->getHeaders(), 'body' => (string) $cassette->getBody(), 'version' => $cassette->getProtocolVersion(), 'reason' => $cassette->getReasonPhrase()];
                file_put_contents($this->cassette, json_encode($responses, JSON_PRETTY_PRINT));
                return $response;
            }, function (\Exception $reason) {
                return new \GuzzleHttp\Promise\RejectedPromise($reason);
            });
        };
    }