Blackfire\Player\Guzzle\StepMiddleware::__invoke PHP Метод

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

public __invoke ( Psr\Http\Message\RequestInterface $request, array $options ) : GuzzleHttp\Promise\PromiseInterface
$request Psr\Http\Message\RequestInterface
$options array
Результат GuzzleHttp\Promise\PromiseInterface
    public function __invoke(RequestInterface $request, array $options)
    {
        $fn = $this->handler;
        if (!isset($options['step'])) {
            return $fn($request, $options);
        }
        if (!$options['step'] instanceof Step) {
            throw new InvalidArgumentException('The "step" option must be an instance of Blackfire\\Player\\Step.');
        }
        $step = $options['step'];
        $values = null;
        if (isset($options['values'])) {
            if (!$options['values'] instanceof ValueBag) {
                throw new InvalidArgumentException('The "values" option must be an instance of Blackfire\\Player\\ValueBag.');
            }
            $values = $options['values'];
        } else {
            $values = new ValueBag();
        }
        $options = $this->prepareRequest($step, $values, $request, $options);
        $msg = sprintf('Step %d: %s %s %s%s', $step->getIndex(), $step->getName(), $request->getMethod(), $request->getUri(), $step->getSamples() > 1 ? sprintf(' (%d samples)', $step->getSamples()) : '');
        $this->logger and $this->logger->info($msg, ['request' => $request->getHeaderLine('X-Request-Id')]);
        return $fn($request, $options)->then(function (ResponseInterface $response) use($request, $options, $step, $values) {
            return $this->processResponse($request, $options, $response, $step, $values);
        });
    }