PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.9.4
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.9.4
4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 4.8.1 trunk 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.10.0 3.2.0 3.3.1 3.3.2 3.3.3 3.4.1 3.4.3 3.5.0 3.6.0 3.7.1 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.8.6 3.8.7 3.9.0 3.9.1 3.9.2 3.9.3 3.9.4 4.0.0 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.0 4.7.0 4.7.1 4.7.2 4.7.3 4.8.0
wp-staging / Framework / Traits / HttpRequestTrait.php
wp-staging / Framework / Traits Last commit date
ApplyFiltersTrait.php 2 months ago ArrayableTrait.php 7 months ago BatchSizeCalculateTrait.php 7 months ago BearerTokenTrait.php 5 months ago BenchmarkTrait.php 3 years ago BooleanTransientTrait.php 5 years ago DatabaseSearchReplaceTrait.php 1 month ago DbRowsGeneratorTrait.php 4 years ago DebugLogTrait.php 1 year ago DeveloperTimerTrait.php 9 months ago EndOfLinePlaceholderTrait.php 1 year ago EventLoggerTrait.php 2 months ago FileScanToCacheTrait.php 3 days ago FormatTrait.php 1 year ago HttpRequestTrait.php 9 months ago HydrateTrait.php 1 year ago I18nTrait.php 1 year ago IpResolverTrait.php 11 months ago MaintenanceTrait.php 6 months ago MemoryExhaustTrait.php 2 years ago MySQLRowsGeneratorTrait.php 7 months ago NoticesTrait.php 3 days ago PropertyConstructor.php 5 years ago RenameTmpDirectoryTrait.php 6 months ago ResourceTrait.php 5 months ago RestRequestTrait.php 4 months ago RestoreFileExclusionTrait.php 1 year ago SafeFileInfoTrait.php 3 days ago SerializeTrait.php 1 year ago SetTimeLimitTrait.php 2 months ago SlashTrait.php 1 year ago SqlCommentTrait.php 4 months ago TablePrefixValidator.php 4 months ago UrlTrait.php 1 year ago ValueGetterTrait.php 2 years ago WindowsOsTrait.php 1 year ago
HttpRequestTrait.php
67 lines
1 <?php
2
3 namespace WPStaging\Framework\Traits;
4
5 use WPStaging\Backup\Exceptions\StorageException;
6
7 trait HttpRequestTrait
8 {
9 /**
10 * @param string $url.
11 * @param array $args Optional. Request arguments. Default empty array.
12 * See https://developer.wordpress.org/reference/classes/WP_Http/request/ for information on accepted arguments.
13 * @param bool $decodeBody Optional. If true the body will be decoded using json_decode.
14 *
15 * @throws StorageException
16 * @return string|array By default the request's response body will be decoded and return as array,
17 * to return the response body as string, pass the decodeBody param as false.
18 */
19 protected function getRequestBody(string $url, array $args = [], bool $decodeBody = true)
20 {
21 $response = $this->getRemoteRequest($url, $args);
22 $body = wp_remote_retrieve_body($response);
23 if ($decodeBody) {
24 return json_decode($body, true);
25 }
26
27 return $body;
28 }
29
30 /**
31 * @param string $url.
32 * @param array $args Optional. Request arguments. Default empty array.
33 * See https://developer.wordpress.org/reference/classes/WP_Http/request/ for information on accepted arguments.
34 *
35 * @throws StorageException
36 * @return array The response array
37 */
38 protected function getRemoteRequest(string $url, array $args = []): array
39 {
40 $defaults = [
41 'timeout' => 40,
42 'httpversion' => '1.0',
43 'sslverify' => false,
44 'method' => 'GET',
45 ];
46 $args = wp_parse_args($args, $defaults);
47 $response = wp_remote_request($url, $args);
48 $responseCode = wp_remote_retrieve_response_code($response);
49
50 if (is_wp_error($response) || (!in_array($responseCode, [200, 201, 202, 204, 206, 302, 308]))) {
51 $errorMessage = is_wp_error($response) ? $response->get_error_message() : wp_remote_retrieve_body($response);
52
53 $xml = @simplexml_load_string($errorMessage);
54 if ($xml !== false) {
55 $errorMessage = (string)$xml->Message ?? (string)$xml->message ?? $errorMessage;
56 if (!empty((string)$xml->Code) || !empty((string)$xml->code)) {
57 $errorMessage .= " (Code: " . ((string)$xml->Code ?? (string)$xml->code) . ")";
58 }
59 }
60
61 throw new StorageException("Error Message: $errorMessage; Error Code: $responseCode; Url: $url", (int)$responseCode);
62 }
63
64 return $response;
65 }
66 }
67