summaryrefslogtreecommitdiffstats
path: root/wp-includes/class-wp-http-response.php
diff options
context:
space:
mode:
Diffstat (limited to 'wp-includes/class-wp-http-response.php')
-rw-r--r--wp-includes/class-wp-http-response.php154
1 files changed, 154 insertions, 0 deletions
diff --git a/wp-includes/class-wp-http-response.php b/wp-includes/class-wp-http-response.php
new file mode 100644
index 0000000..d102877
--- /dev/null
+++ b/wp-includes/class-wp-http-response.php
@@ -0,0 +1,154 @@
+<?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();
+ }
+}