155 lines
2.9 KiB
PHP
155 lines
2.9 KiB
PHP
<?php
|
|
/**
|
|
* HTTP API: WP_HTTP_Response class
|
|
*
|
|
* @package WordPress
|
|
* @subpackage HTTP
|
|
* @since 4.4.0
|
|
*/
|
|
|
|
/**
|
|
* Core class used to prepare HTTP responses.
|
|
*
|
|
* @since 4.4.0
|
|
*/
|
|
#[AllowDynamicProperties]
|
|
class WP_HTTP_Response {
|
|
|
|
/**
|
|
* Response data.
|
|
*
|
|
* @since 4.4.0
|
|
* @var mixed
|
|
*/
|
|
public $data;
|
|
|
|
/**
|
|
* Response headers.
|
|
*
|
|
* @since 4.4.0
|
|
* @var array
|
|
*/
|
|
public $headers;
|
|
|
|
/**
|
|
* Response status.
|
|
*
|
|
* @since 4.4.0
|
|
* @var int
|
|
*/
|
|
public $status;
|
|
|
|
/**
|
|
* Constructor.
|
|
*
|
|
* @since 4.4.0
|
|
*
|
|
* @param mixed $data Response data. Default null.
|
|
* @param int $status Optional. HTTP status code. Default 200.
|
|
* @param array $headers Optional. HTTP header map. Default empty array.
|
|
*/
|
|
public function __construct( $data = null, $status = 200, $headers = array() ) {
|
|
$this->set_data( $data );
|
|
$this->set_status( $status );
|
|
$this->set_headers( $headers );
|
|
}
|
|
|
|
/**
|
|
* Retrieves headers associated with the response.
|
|
*
|
|
* @since 4.4.0
|
|
*
|
|
* @return array Map of header name to header value.
|
|
*/
|
|
public function get_headers() {
|
|
return $this->headers;
|
|
}
|
|
|
|
/**
|
|
* Sets all header values.
|
|
*
|
|
* @since 4.4.0
|
|
*
|
|
* @param array $headers Map of header name to header value.
|
|
*/
|
|
public function set_headers( $headers ) {
|
|
$this->headers = $headers;
|
|
}
|
|
|
|
/**
|
|
* Sets a single HTTP header.
|
|
*
|
|
* @since 4.4.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 || ! isset( $this->headers[ $key ] ) ) {
|
|
$this->headers[ $key ] = $value;
|
|
} else {
|
|
$this->headers[ $key ] .= ', ' . $value;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Retrieves the HTTP return code for the response.
|
|
*
|
|
* @since 4.4.0
|
|
*
|
|
* @return int The 3-digit HTTP status code.
|
|
*/
|
|
public function get_status() {
|
|
return $this->status;
|
|
}
|
|
|
|
/**
|
|
* Sets the 3-digit HTTP status code.
|
|
*
|
|
* @since 4.4.0
|
|
*
|
|
* @param int $code HTTP status.
|
|
*/
|
|
public function set_status( $code ) {
|
|
$this->status = absint( $code );
|
|
}
|
|
|
|
/**
|
|
* Retrieves the response data.
|
|
*
|
|
* @since 4.4.0
|
|
*
|
|
* @return mixed Response data.
|
|
*/
|
|
public function get_data() {
|
|
return $this->data;
|
|
}
|
|
|
|
/**
|
|
* Sets the response data.
|
|
*
|
|
* @since 4.4.0
|
|
*
|
|
* @param mixed $data Response data.
|
|
*/
|
|
public function set_data( $data ) {
|
|
$this->data = $data;
|
|
}
|
|
|
|
/**
|
|
* Retrieves the response data for JSON serialization.
|
|
*
|
|
* It is expected that in most implementations, this will return the same as get_data(),
|
|
* however this may be different if you want to do custom JSON data handling.
|
|
*
|
|
* @since 4.4.0
|
|
*
|
|
* @return mixed Any JSON-serializable value.
|
|
*/
|
|
public function jsonSerialize() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
|
|
return $this->get_data();
|
|
}
|
|
}
|