Files
unirest-php/lib/Unirest/HttpResponse.php
2013-04-24 16:05:06 -07:00

80 lines
1.8 KiB
PHP

<?php
namespace Unirest;
class HttpResponse
{
private $code;
private $raw_body;
private $body;
private $headers;
/**
* HttpResponse constructor
* @param int $code Response code of the cURL request
* @param string $raw_body The raw body of the cURL response
* @param string $headers Raw header string from cURL response
*/
function __construct($code, $raw_body, $headers)
{
$this->code = $code;
$this->headers = $this->get_headers_from_curl_response($headers);
$this->raw_body = $raw_body;
$this->body = $raw_body;
$json = json_decode($raw_body);
if (json_last_error() == JSON_ERROR_NONE) {
$this->body = $json;
}
}
/**
* Return a property of the response if it exists
* Possibilities include:
* - code
* - raw_body
* - body (if the response is json-decodable)
* - headers
* @param [type] $property [description]
* @return [type] [description]
*/
public function __get($property)
{
if (property_exists($this, $property)) {
return $this->$property;
}
}
/**
* Set the properties of this object
* @param string $property The property name
* @param mixed $value The property value
*/
public function __set($property, $value)
{
if (property_exists($this, $property)) {
$this->$property = $value;
}
return $this;
}
/**
* Retrieve the cURL response headers from the
* header string and convert it into an array
* @param string $headers header string from cURL response
* @return array headers in array form
*/
private function get_headers_from_curl_response($headers)
{
foreach (explode("\r\n", $headers) as $i => $line) {
if ($i !== 0) {
if (!empty($key) && substr($key, 0, 4) != "HTTP") {
$result[$key] = $value;
} else {
list ($key, $value) = explode(': ', $line);
}
}
}
return $result;
}
}