/** * Returns the content of the current response. File responses will be read first. * * @return string * * @throws \RuntimeException */ protected function getResponseContent() { if (!static::$response instanceof Response) { throw new \RuntimeException('No response available'); } $content = static::$response->getContent(); if (static::$response instanceof BinaryFileResponse) { $content = file_get_contents(static::$response->getFile()->getPathname()); } return $content; }
/** * {@inheritdoc} */ 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; }