PluginProbe
WP Database Backup – Unlimited Database & Files Backup by Backup for WP / 6.11
WP Database Backup – Unlimited Database & Files Backup by Backup for WP v6.11
7.13 7.12 trunk 1.1 2.1.1 5.9 6.0 6.1 6.10 6.11 6.12 6.12.1 6.2 6.3 6.4 6.5 6.5.1 6.6 6.7 6.8 6.9 7.0 7.0.1 7.1 7.10 All 34 releases
wp-database-backup / includes / admin / Destination / Google / google-api-php-client / src / io / Google_HttpRequest.php

Google_HttpRequest.php in WP Database Backup – Unlimited Database & Files Backup by Backup for WP 6.11, at includes/admin/Destination/Google/google-api-php-client/src/io/Google_HttpRequest.php

305 lines 7.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 * Copyright 2010 Google Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 /**
19 * HTTP Request to be executed by apiIO classes. Upon execution, the
20 * responseHttpCode, responseHeaders and responseBody will be filled in.
21 *
22 * @author Chris Chabot <chabotc@google.com>
23 * @author Chirag Shah <chirags@google.com>
24 *
25 */
26 class Google_HttpRequest {
27 const USER_AGENT_SUFFIX = "google-api-php-client/0.6.5";
28 private $batchHeaders = array(
29 'Content-Type' => 'application/http',
30 'Content-Transfer-Encoding' => 'binary',
31 'MIME-Version' => '1.0',
32 'Content-Length' => ''
33 );
34
35 protected $url;
36 protected $requestMethod;
37 protected $requestHeaders;
38 protected $postBody;
39 protected $userAgent;
40
41 protected $responseHttpCode;
42 protected $responseHeaders;
43 protected $responseBody;
44
45 public $accessKey;
46
47 public function __construct($url, $method = 'GET', $headers = array(), $postBody = null) {
48 $this->setUrl($url);
49 $this->setRequestMethod($method);
50 $this->setRequestHeaders($headers);
51 $this->setPostBody($postBody);
52
53 global $apiConfig;
54 if (empty($apiConfig['application_name'])) {
55 $this->userAgent = self::USER_AGENT_SUFFIX;
56 } else {
57 $this->userAgent = $apiConfig['application_name'] . " " . self::USER_AGENT_SUFFIX;
58 }
59 }
60
61 /**
62 * Misc function that returns the base url component of the $url
63 * used by the OAuth signing class to calculate the base string
64 * @return string The base url component of the $url.
65 * @see http://oauth.net/core/1.0a/#anchor13
66 */
67 public function getBaseUrl() {
68 if ($pos = strpos($this->url, '?')) {
69 return substr($this->url, 0, $pos);
70 }
71 return $this->url;
72 }
73
74 /**
75 * Misc function that returns an array of the query parameters of the current
76 * url used by the OAuth signing class to calculate the signature
77 * @return array Query parameters in the query string.
78 */
79 public function getQueryParams() {
80 if ($pos = strpos($this->url, '?')) {
81 $queryStr = substr($this->url, $pos + 1);
82 $params = array();
83 parse_str($queryStr, $params);
84 return $params;
85 }
86 return array();
87 }
88
89 /**
90 * @return string HTTP Response Code.
91 */
92 public function getResponseHttpCode() {
93 return (int) $this->responseHttpCode;
94 }
95
96 /**
97 * @param int $responseHttpCode HTTP Response Code.
98 */
99 public function setResponseHttpCode($responseHttpCode) {
100 $this->responseHttpCode = $responseHttpCode;
101 }
102
103 /**
104 * @return $responseHeaders (array) HTTP Response Headers.
105 */
106 public function getResponseHeaders() {
107 return $this->responseHeaders;
108 }
109
110 /**
111 * @return string HTTP Response Body
112 */
113 public function getResponseBody() {
114 return $this->responseBody;
115 }
116
117 /**
118 * @param array $headers The HTTP response headers
119 * to be normalized.
120 */
121 public function setResponseHeaders($headers) {
122 $headers = Google_Utils::normalize($headers);
123 if ($this->responseHeaders) {
124 $headers = array_merge($this->responseHeaders, $headers);
125 }
126
127 $this->responseHeaders = $headers;
128 }
129
130 /**
131 * @param string $key
132 * @return array|boolean Returns the requested HTTP header or
133 * false if unavailable.
134 */
135 public function getResponseHeader($key) {
136 return isset($this->responseHeaders[$key])
137 ? $this->responseHeaders[$key]
138 : false;
139 }
140
141 /**
142 * @param string $responseBody The HTTP response body.
143 */
144 public function setResponseBody($responseBody) {
145 $this->responseBody = $responseBody;
146 }
147
148 /**
149 * @return string $url The request URL.
150 */
151
152 public function getUrl() {
153 return $this->url;
154 }
155
156 /**
157 * @return string $method HTTP Request Method.
158 */
159 public function getRequestMethod() {
160 return $this->requestMethod;
161 }
162
163 /**
164 * @return array $headers HTTP Request Headers.
165 */
166 public function getRequestHeaders() {
167 return $this->requestHeaders;
168 }
169
170 /**
171 * @param string $key
172 * @return array|boolean Returns the requested HTTP header or
173 * false if unavailable.
174 */
175 public function getRequestHeader($key) {
176 return isset($this->requestHeaders[$key])
177 ? $this->requestHeaders[$key]
178 : false;
179 }
180
181 /**
182 * @return string $postBody HTTP Request Body.
183 */
184 public function getPostBody() {
185 return $this->postBody;
186 }
187
188 /**
189 * @param string $url the url to set
190 */
191 public function setUrl($url) {
192 if (substr($url, 0, 4) == 'http') {
193 $this->url = $url;
194 } else {
195 // Force the path become relative.
196 if (substr($url, 0, 1) !== '/') {
197 $url = '/' . $url;
198 }
199 global $apiConfig;
200 $this->url = $apiConfig['basePath'] . $url;
201 }
202 }
203
204 /**
205 * @param string $method Set he HTTP Method and normalize
206 * it to upper-case, as required by HTTP.
207 *
208 */
209 public function setRequestMethod($method) {
210 $this->requestMethod = strtoupper($method);
211 }
212
213 /**
214 * @param array $headers The HTTP request headers
215 * to be set and normalized.
216 */
217 public function setRequestHeaders($headers) {
218 $headers = Google_Utils::normalize($headers);
219 if ($this->requestHeaders) {
220 $headers = array_merge($this->requestHeaders, $headers);
221 }
222 $this->requestHeaders = $headers;
223 }
224
225 /**
226 * @param string $postBody the postBody to set
227 */
228 public function setPostBody($postBody) {
229 $this->postBody = $postBody;
230 }
231
232 /**
233 * Set the User-Agent Header.
234 * @param string $userAgent The User-Agent.
235 */
236 public function setUserAgent($userAgent) {
237 $this->userAgent = $userAgent;
238 }
239
240 /**
241 * @return string The User-Agent.
242 */
243 public function getUserAgent() {
244 return $this->userAgent;
245 }
246
247 /**
248 * Returns a cache key depending on if this was an OAuth signed request
249 * in which case it will use the non-signed url and access key to make this
250 * cache key unique per authenticated user, else use the plain request url
251 * @return string The md5 hash of the request cache key.
252 */
253 public function getCacheKey() {
254 $key = $this->getUrl();
255
256 if (isset($this->accessKey)) {
257 $key .= $this->accessKey;
258 }
259
260 if (isset($this->requestHeaders['authorization'])) {
261 $key .= $this->requestHeaders['authorization'];
262 }
263
264 return md5($key);
265 }
266
267 public function getParsedCacheControl() {
268 $parsed = array();
269 $rawCacheControl = $this->getResponseHeader('cache-control');
270 if ($rawCacheControl) {
271 $rawCacheControl = str_replace(', ', '&', $rawCacheControl);
272 parse_str($rawCacheControl, $parsed);
273 }
274
275 return $parsed;
276 }
277
278 /**
279 * @param string $id
280 * @return string A string representation of the HTTP Request.
281 */
282 public function toBatchString($id) {
283 $str = '';
284 foreach($this->batchHeaders as $key => $val) {
285 $str .= $key . ': ' . $val . "\n";
286 }
287
288 $str .= "Content-ID: $id\n";
289 $str .= "\n";
290
291 $path = parse_url($this->getUrl(), PHP_URL_PATH);
292 $str .= $this->getRequestMethod() . ' ' . $path . " HTTP/1.1\n";
293 foreach($this->getRequestHeaders() as $key => $val) {
294 $str .= $key . ': ' . $val . "\n";
295 }
296
297 if ($this->getPostBody()) {
298 $str .= "\n";
299 $str .= $this->getPostBody();
300 }
301
302 return $str;
303 }
304 }
305