| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 | <?php/** * HTTP API: WP_HTTP_Requests_Response class * * @package WordPress * @subpackage HTTP * @since 4.6.0 *//** * Core wrapper object for a Requests_Response for standardisation. * * @since 4.6.0 * * @see WP_HTTP_Response */class WP_HTTP_Requests_Response extends WP_HTTP_Response {	/**	 * Requests Response object.	 *	 * @since 4.6.0	 * @var Requests_Response	 */	protected $response;	/**	 * Filename the response was saved to.	 *	 * @since 4.6.0	 * @var string|null	 */	protected $filename;	/**	 * Constructor.	 *	 * @since 4.6.0	 *	 * @param Requests_Response $response HTTP response.	 * @param string            $filename Optional. File name. Default empty.	 */	public function __construct( Requests_Response $response, $filename = '' ) {		$this->response = $response;		$this->filename = $filename;	}	/**	 * Retrieves the response object for the request.	 *	 * @since 4.6.0	 *	 * @return Requests_Response HTTP response.	 */	public function get_response_object() {		return $this->response;	}	/**	 * Retrieves headers associated with the response.	 *	 * @since 4.6.0	 *	 * @return \Requests_Utility_CaseInsensitiveDictionary Map of header name to header value.	 */	public function get_headers() {		// Ensure headers remain case-insensitive.		$converted = new Requests_Utility_CaseInsensitiveDictionary();		foreach ( $this->response->headers->getAll() as $key => $value ) {			if ( count( $value ) === 1 ) {				$converted[ $key ] = $value[0];			} else {				$converted[ $key ] = $value;			}		}		return $converted;	}	/**	 * Sets all header values.	 *	 * @since 4.6.0	 *	 * @param array $headers Map of header name to header value.	 */	public function set_headers( $headers ) {		$this->response->headers = new Requests_Response_Headers( $headers );	}	/**	 * Sets a single HTTP header.	 *	 * @since 4.6.0	 *	 * @param string $key     Header name.	 * @param string $value   Header value.	 * @param bool   $replace Optional. Whether to replace an existing header of the same name.	 *                        Default true.	 */	public function header( $key, $value, $replace = true ) {		if ( $replace ) {			unset( $this->response->headers[ $key ] );		}		$this->response->headers[ $key ] = $value;	}	/**	 * Retrieves the HTTP return code for the response.	 *	 * @since 4.6.0	 *	 * @return int The 3-digit HTTP status code.	 */	public function get_status() {		return $this->response->status_code;	}	/**	 * Sets the 3-digit HTTP status code.	 *	 * @since 4.6.0	 *	 * @param int $code HTTP status.	 */	public function set_status( $code ) {		$this->response->status_code = absint( $code );	}	/**	 * Retrieves the response data.	 *	 * @since 4.6.0	 *	 * @return string Response data.	 */	public function get_data() {		return $this->response->body;	}	/**	 * Sets the response data.	 *	 * @since 4.6.0	 *	 * @param string $data Response data.	 */	public function set_data( $data ) {		$this->response->body = $data;	}	/**	 * Retrieves cookies from the response.	 *	 * @since 4.6.0	 *	 * @return WP_HTTP_Cookie[] List of cookie objects.	 */	public function get_cookies() {		$cookies = array();		foreach ( $this->response->cookies as $cookie ) {			$cookies[] = new WP_Http_Cookie(				array(					'name'      => $cookie->name,					'value'     => urldecode( $cookie->value ),					'expires'   => isset( $cookie->attributes['expires'] ) ? $cookie->attributes['expires'] : null,					'path'      => isset( $cookie->attributes['path'] ) ? $cookie->attributes['path'] : null,					'domain'    => isset( $cookie->attributes['domain'] ) ? $cookie->attributes['domain'] : null,					'host_only' => isset( $cookie->flags['host-only'] ) ? $cookie->flags['host-only'] : null,				)			);		}		return $cookies;	}	/**	 * Converts the object to a WP_Http response array.	 *	 * @since 4.6.0	 *	 * @return array WP_Http response array, per WP_Http::request().	 */	public function to_array() {		return array(			'headers'  => $this->get_headers(),			'body'     => $this->get_data(),			'response' => array(				'code'    => $this->get_status(),				'message' => get_status_header_desc( $this->get_status() ),			),			'cookies'  => $this->get_cookies(),			'filename' => $this->filename,		);	}}
 |