You are here

private function StreamHandler::createResponse in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php \GuzzleHttp\Handler\StreamHandler::createResponse()
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 = $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 new RejectedPromise($ex);
    }
  }
  if ($sink !== $stream) {
    $this
      ->drain($stream, $sink);
  }
  $this
    ->invokeStats($options, $request, $startTime, $response, null);
  return new FulfilledPromise($response);
}