You are here

private function StreamHandler::createResponse in Lockr 7.3

1 call to StreamHandler::createResponse()
StreamHandler::__invoke in vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php
Sends an HTTP request.

File

vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php, line 93

Class

StreamHandler
HTTP handler that uses PHP's HTTP stream wrapper.

Namespace

GuzzleHttp\Handler

Code

private function createResponse(RequestInterface $request, array $options, $stream, $startTime) {
  $hdrs = $this->lastHeaders;
  $this->lastHeaders = [];
  $parts = explode(' ', array_shift($hdrs), 3);
  $ver = explode('/', $parts[0])[1];
  $status = $parts[1];
  $reason = isset($parts[2]) ? $parts[2] : null;
  $headers = \GuzzleHttp\headers_from_lines($hdrs);
  list($stream, $headers) = $this
    ->checkDecode($options, $headers, $stream);
  $stream = Psr7\stream_for($stream);
  $sink = $stream;
  if (strcasecmp('HEAD', $request
    ->getMethod())) {
    $sink = $this
      ->createSink($stream, $options);
  }
  $response = new Psr7\Response($status, $headers, $sink, $ver, $reason);
  if (isset($options['on_headers'])) {
    try {
      $options['on_headers']($response);
    } catch (\Exception $e) {
      $msg = 'An error was encountered during the on_headers event';
      $ex = new RequestException($msg, $request, $response, $e);
      return \GuzzleHttp\Promise\rejection_for($ex);
    }
  }

  // Do not drain when the request is a HEAD request because they have
  // no body.
  if ($sink !== $stream) {
    $this
      ->drain($stream, $sink, $response
      ->getHeaderLine('Content-Length'));
  }
  $this
    ->invokeStats($options, $request, $startTime, $response, null);
  return new FulfilledPromise($response);
}