You are here

public function DiactorosFactory::createResponse in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/symfony/psr-http-message-bridge/Factory/DiactorosFactory.php \Symfony\Bridge\PsrHttpMessage\Factory\DiactorosFactory::createResponse()

Creates a PSR-7 Response instance from a Symfony one.

Parameters

Response $symfonyResponse:

Return value

ResponseInterface

Overrides HttpMessageFactoryInterface::createResponse

File

vendor/symfony/psr-http-message-bridge/Factory/DiactorosFactory.php, line 120

Class

DiactorosFactory
Builds Psr\HttpMessage instances using the Zend Diactoros implementation.

Namespace

Symfony\Bridge\PsrHttpMessage\Factory

Code

public function createResponse(Response $symfonyResponse) {
  if ($symfonyResponse instanceof BinaryFileResponse) {
    $stream = new DiactorosStream($symfonyResponse
      ->getFile()
      ->getPathname(), 'r');
  }
  else {
    $stream = new DiactorosStream('php://temp', 'wb+');
    if ($symfonyResponse instanceof StreamedResponse) {
      ob_start(function ($buffer) use ($stream) {
        $stream
          ->write($buffer);
        return false;
      });
      $symfonyResponse
        ->sendContent();
      ob_end_clean();
    }
    else {
      $stream
        ->write($symfonyResponse
        ->getContent());
    }
  }
  $headers = $symfonyResponse->headers
    ->all();
  $cookies = $symfonyResponse->headers
    ->getCookies();
  if (!empty($cookies)) {
    $headers['Set-Cookie'] = array();
    foreach ($cookies as $cookie) {
      $headers['Set-Cookie'][] = $cookie
        ->__toString();
    }
  }
  $response = new DiactorosResponse($stream, $symfonyResponse
    ->getStatusCode(), $headers);
  $protocolVersion = $symfonyResponse
    ->getProtocolVersion();
  if ('1.1' !== $protocolVersion) {
    $response = $response
      ->withProtocolVersion($protocolVersion);
  }
  return $response;
}