From a415c29efee45520ae252d2aa28f1083a521cd7b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 09:56:49 +0200 Subject: Adding upstream version 6.4.3+dfsg1. Signed-off-by: Daniel Baumann --- wp-includes/class-wp-http-requests-response.php | 197 ++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 wp-includes/class-wp-http-requests-response.php (limited to 'wp-includes/class-wp-http-requests-response.php') diff --git a/wp-includes/class-wp-http-requests-response.php b/wp-includes/class-wp-http-requests-response.php new file mode 100644 index 0000000..8032c54 --- /dev/null +++ b/wp-includes/class-wp-http-requests-response.php @@ -0,0 +1,197 @@ +response = $response; + $this->filename = $filename; + } + + /** + * Retrieves the response object for the request. + * + * @since 4.6.0 + * + * @return WpOrg\Requests\Response HTTP response. + */ + public function get_response_object() { + return $this->response; + } + + /** + * Retrieves headers associated with the response. + * + * @since 4.6.0 + * + * @return \WpOrg\Requests\Utility\CaseInsensitiveDictionary Map of header name to header value. + */ + public function get_headers() { + // Ensure headers remain case-insensitive. + $converted = new WpOrg\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 WpOrg\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, + ); + } +} -- cgit v1.2.3