$response->getStatusCode(), 'reason_phrase' => $response->getReasonPhrase(), 'protocol_version' => $response->getProtocolVersion(), 'headers' => $response->getHeaders(), 'body' => (string) $response->getBody(), ]; } /** * Deserialize a response array to a response instance. * * @param array $serializedResponse * @return Response * @throws UnexpectedValueException when cannot deserialize response */ public static function fromArray(array $serializedResponse) { try { $body = new Stream('php://memory', 'wb+'); $body->write(self::getValueFromKey($serializedResponse, 'body')); $statusCode = self::getValueFromKey($serializedResponse, 'status_code'); $headers = self::getValueFromKey($serializedResponse, 'headers'); $protocolVersion = self::getValueFromKey($serializedResponse, 'protocol_version'); $reasonPhrase = self::getValueFromKey($serializedResponse, 'reason_phrase'); return (new Response($body, $statusCode, $headers)) ->withProtocolVersion($protocolVersion) ->withStatus($statusCode, $reasonPhrase); } catch (\Exception $exception) { throw new UnexpectedValueException('Cannot deserialize response', null, $exception); } } /** * @param array $data * @param string $key * @param string $message * @return mixed * @throws UnexpectedValueException */ private static function getValueFromKey(array $data, $key, $message = null) { if (isset($data[$key])) { return $data[$key]; } if ($message === null) { $message = sprintf('Missing "%s" key in serialized request', $key); } throw new UnexpectedValueException($message); } }