As the sun rises and the forest mist clears, and the clouds return and the caves darken, these changes of light and shadow are the morning and evening in the mountains. Wildflowers bloom with their subtle fragrance, fine trees flourish with their dense shade, the wind and frost are pure and clean, and the water recedes to reveal the rocks—these are the four seasons in the mountains. Going out in the morning and returning in the evening, the scenery of the four seasons is different, and the joy is endless.至于负者歌于途,行者休于树,前者呼,后者应,伛偻提携,往来而不绝者,滁人游也。临溪而渔,溪深而鱼肥,酿泉为酒,泉香而酒洌,山肴野蔌,杂然而前陈者,太守宴也。宴酣之乐,非丝非竹,射者中,弈者胜,觥筹交错,起坐而喧哗者,众宾欢也。苍颜白发,颓然乎其间者,太守醉也。
<?php
/**
* HTTP API: WP_HTTP_Requests_Response class
*
* @package WordPress
* @subpackage HTTP
* @since 4.6.0
*/
/**
* Core wrapper object for a WpOrg\Requests\Response for standardization.
*
* @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 \WpOrg\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 \WpOrg\Requests\Response $response HTTP response.
* @param string $filename Optional. File name. Default empty.
*/
public function __construct( WpOrg\Requests\Response $response, $filename = '' ) {
$this->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' => $cookie->attributes['expires'] ?? null,
'path' => $cookie->attributes['path'] ?? null,
'domain' => $cookie->attributes['domain'] ?? null,
'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,
);
}
}