<?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 */ 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(); } }