/**
  */
 public static function createFromRawResponse($rawResponse)
 {
     $response = new self($rawResponse);
     $lines = preg_split('/(\\r?\\n)/', $rawResponse);
     for ($i = 0; $i < count($lines); $i++) {
         if (0 == $i) {
             preg_match('/^HTTP\\/(\\d\\.\\d)\\s(\\d+)\\s(.+)/', $lines[$i], $statusLine);
             $response->setStatusCode($statusCode = $statusLine[2]);
             continue;
         }
         if (empty($lines[$i])) {
             $body = array_slice($lines, $i + 1);
             $response->setBody(implode("\n", $body));
             break;
         }
         if (strpos($lines[$i], ':')) {
             $headerParts = explode(':', $lines[$i]);
             $response->setHeader($headerParts[0], $headerParts[1]);
         }
     }
     return $response;
 }
Example #2
0
 /**
  * Create an instance from an input string.
  * @param  string     $str the stringified response
  * @return \vakata\http\Response          the response instance
  * @codeCoverageIgnore
  */
 public static function fromString($str)
 {
     $res = new self();
     $break = strpos($str, "\r\n\r\n") === false ? "\n" : "\r\n";
     // just in case someone breaks RFC 2616
     list($headers, $message) = explode($break . $break, (string) $str, 2);
     $headers = explode($break, preg_replace("(" . $break . "\\s+)", " ", $headers));
     if (isset($headers[0]) && substr($headers[0], 0, 5) === 'HTTP/') {
         $temp = explode(' ', substr($headers[0], 5));
         $res->setProtocolVersion($temp[0]);
         $res->setStatusCode((int) $temp[1]);
         unset($headers[0]);
         $headers = array_values($headers);
     }
     foreach (array_filter($headers) as $v) {
         $v = explode(':', $v, 2);
         $res->setHeader(trim($v[0]), trim($v[1]));
     }
     $res->setBody($message);
     $res->removeHeader('Content-Length');
     $res->removeHeader('Transfer-Encoding');
     return $res;
 }
Example #3
0
 public static function create(\Exception $exception, $statusCode = null, array $headers = array())
 {
     $e = new self();
     $e->setMessage($exception->getMessage());
     $e->setCode($exception->getCode());
     if (null === $statusCode) {
         $statusCode = 500;
     }
     $e->setStatusCode($statusCode);
     $e->setHeaders($headers);
     $e->setTraceFromException($exception);
     $e->setClass(get_class($exception));
     $e->setFile($exception->getFile());
     $e->setLine($exception->getLine());
     if ($exception->getPrevious()) {
         $e->setPrevious(self::create($exception->getPrevious()));
     }
     return $e;
 }
 /**
  * {@inheritdoc}
  */
 public static function fromArray(array $values)
 {
     $message = new self();
     $values = array_merge(['status_code' => null, 'request_id' => null, 'requests' => [], 'platform_requests' => [], 'latitude' => null, 'longitude' => null, 'accuracy' => null, 'auth_info' => null, 'auth_ticket' => null, 'ms_since_last_locationfix' => null], $values);
     $message->setStatusCode($values['status_code']);
     $message->setRequestId($values['request_id']);
     $message->setLatitude($values['latitude']);
     $message->setLongitude($values['longitude']);
     $message->setAccuracy($values['accuracy']);
     $message->setAuthInfo($values['auth_info']);
     $message->setAuthTicket($values['auth_ticket']);
     $message->setMsSinceLastLocationfix($values['ms_since_last_locationfix']);
     foreach ($values['requests'] as $item) {
         $message->addRequests($item);
     }
     foreach ($values['platform_requests'] as $item) {
         $message->addPlatformRequests($item);
     }
     return $message;
 }
 /**
  * {@inheritdoc}
  */
 public static function fromArray(array $values)
 {
     $message = new self();
     $values = array_merge(['status_code' => null, 'request_id' => null, 'api_url' => null, 'platform_returns' => [], 'auth_ticket' => null, 'returns' => [], 'error' => null], $values);
     $message->setStatusCode($values['status_code']);
     $message->setRequestId($values['request_id']);
     $message->setApiUrl($values['api_url']);
     $message->setAuthTicket($values['auth_ticket']);
     $message->setError($values['error']);
     foreach ($values['platform_returns'] as $item) {
         $message->addPlatformReturns($item);
     }
     foreach ($values['returns'] as $item) {
         $message->addReturns($item);
     }
     return $message;
 }
 /**
  * Construct the HttpResponse from a file, you can create the
  * dumps from actual traffic using "curl -i http://www.example.org > dump.txt"
  */
 public static function fromFile($file)
 {
     $data = @file_get_contents($file);
     if (FALSE === $data) {
         throw new HttpResponseException("unable to read file");
     }
     $response = new self();
     // separate the headers from the content
     list($headerLines, $contentData) = explode("\r\n\r\n", $data);
     $headerLinesArray = explode("\r\n", $headerLines);
     // First header is HTTP response code, e.g.: HTTP/1.1 200 OK
     $responseCode = substr($headerLinesArray[0], 9, 3);
     $response->setStatusCode($responseCode);
     unset($headerLinesArray[0]);
     foreach ($headerLinesArray as $headerLine) {
         list($k, $v) = explode(":", $headerLine);
         $response->setHeader(trim($k), trim($v));
     }
     $response->setContent($contentData);
     return $response;
 }