Blackfire\Player\Guzzle\RequestFactory::createRequestFromFollow PHP Метод

createRequestFromFollow() приватный Метод

private createRequestFromFollow ( Step $step, ValueBag $values, Psr\Http\Message\RequestInterface $request = null, Psr\Http\Message\ResponseInterface $response = null, Crawler $crawler = null )
$step Blackfire\Player\Step
$values Blackfire\Player\ValueBag
$request Psr\Http\Message\RequestInterface
$response Psr\Http\Message\ResponseInterface
$crawler Symfony\Component\DomCrawler\Crawler
    private function createRequestFromFollow(Step $step, ValueBag $values, RequestInterface $request = null, ResponseInterface $response = null, Crawler $crawler = null)
    {
        if (null === $request || null === $response) {
            throw new CrawlException('Unable to follow when no previous page.');
        }
        if ('3' !== substr($response->getStatusCode(), 0, 1) || !$response->hasHeader('Location')) {
            throw new CrawlException('Unable to follow when no previous page is not a redirect.');
        }
        // logic from Guzzle\RedirectMiddleware
        // Request modifications to apply.
        $modify = [];
        // Use a GET request if this is an entity enclosing request and we are
        // not forcing RFC compliance, but rather emulating what all browsers
        // would do.
        $statusCode = $response->getStatusCode();
        if ($statusCode == 303 || $statusCode <= 302 && $request->getBody()) {
            $modify['method'] = 'GET';
            $modify['body'] = '';
        }
        $modify['uri'] = Psr7\Uri::resolve($request->getUri(), $response->getHeaderLine('Location'));
        Psr7\rewind_body($request);
        // Add the Referer header only if we are not redirecting from https to http
        if ($modify['uri']->getScheme() === $request->getUri()->getScheme()) {
            $modify['set_headers']['Referer'] = (string) $request->getUri()->withUserInfo('', '');
        } else {
            $modify['remove_headers'][] = 'Referer';
        }
        // Remove Authorization header if host is different
        if ($request->getUri()->getHost() !== $modify['uri']->getHost()) {
            $modify['remove_headers'][] = 'Authorization';
        }
        return Psr7\modify_request($request, $modify);
    }