| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | <?phpnamespace Qiniu\Pili;class HttpResponse{    private $code;    private $raw_body;    private $body;    private $headers;    /**     * @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     */    public 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, true);        if (json_last_error() == JSON_ERROR_NONE) {            $this->body = $json;        }    }    /**     * Return a property of the response if it exists.     * Possibilities include: code, raw_body, headers, body (if the response is json-decodable)     * @return mixed     */    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     */    private function get_headers_from_curl_response($headers)    {        $headers = explode("\r\n", $headers);        array_shift($headers);        foreach ($headers as $line) {            if (strstr($line, ': ')) {                list($key, $value) = explode(': ', $line);                $result[$key] = $value;            }        }        return $result;    }}
 |