forked from WordPress/WordPress
-
Notifications
You must be signed in to change notification settings - Fork 0
/
class-wp-http-response.php
153 lines (140 loc) · 2.88 KB
/
class-wp-http-response.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
<?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();
}
}