PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.11.0
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.11.0
4.11.0 4.10.0 4.9.5 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 / RestRequestTrait.php
wp-staging / Framework / Traits Last commit date
ApplyFiltersTrait.php 1 day ago ArrayableTrait.php 1 day ago BatchSizeCalculateTrait.php 1 day ago BearerTokenTrait.php 1 day ago BenchmarkTrait.php 1 day ago BooleanTransientTrait.php 1 day ago DatabaseSearchReplaceTrait.php 1 day ago DbRowsGeneratorTrait.php 1 day ago DebugLogTrait.php 1 day ago DeveloperTimerTrait.php 1 day ago EndOfLinePlaceholderTrait.php 1 day ago EventLoggerTrait.php 1 day ago FileScanToCacheTrait.php 1 day ago FormatTrait.php 1 day ago HttpRequestTrait.php 1 day ago HydrateTrait.php 1 day ago I18nTrait.php 1 day ago IpResolverTrait.php 1 day ago JobResponseTrait.php 1 day ago MaintenanceTrait.php 7 months ago MemoryExhaustTrait.php 1 day ago MySQLRowsGeneratorTrait.php 1 day ago NoticesTrait.php 1 day ago PagesTrait.php 1 day ago PropertyConstructor.php 1 day ago RenameTmpDirectoryTrait.php 1 day ago ResourceTrait.php 1 day ago RestRequestTrait.php 1 day ago RestoreFileExclusionTrait.php 1 day ago SafeFileInfoTrait.php 1 day ago SerializeTrait.php 1 day ago SetTimeLimitTrait.php 1 day ago SlashTrait.php 1 day ago SqlCommentTrait.php 1 day ago TablePrefixValidator.php 5 months ago UrlTrait.php 1 day ago ValueGetterTrait.php 1 day ago WindowsOsTrait.php 1 day ago
RestRequestTrait.php
129 lines
1 <?php
2
3 namespace WPStaging\Framework\Traits;
4
5 use WPStaging\Framework\Rest\Rest;
6
7 trait RestRequestTrait
8 {
9
10
11
12
13
14 private $headers = [];
15
16 private $verifySsl = false;
17
18
19
20
21
22
23 private $isBlockingRequest = true;
24
25
26 private $httpAuthUsername = '';
27
28
29 private $httpAuthPassword = '';
30
31
32
33
34
35
36
37
38 protected function sendRestRequest(string $url, string $endpoint, array $body = [], string $accessToken = '')
39 {
40 $headers = $this->headers;
41 $headers['Content-Type'] = 'application/json';
42
43 if (!empty($accessToken)) {
44 $headers = array_merge($headers, $this->getAuthorizationHeader($accessToken));
45 }
46
47
48
49
50
51 if (!empty($this->httpAuthUsername) && !empty($this->httpAuthPassword)) {
52 $headers['Authorization'] = 'Basic ' . base64_encode($this->httpAuthUsername . ':' . $this->httpAuthPassword);
53 }
54
55 $timeout = Rest::REQUEST_TIMEOUT;
56 if (!$this->isBlockingRequest) {
57
58 $timeout = 0.01;
59 }
60
61 $args = [
62 'method' => 'POST',
63 'headers' => $headers,
64 'blocking' => $this->isBlockingRequest,
65 'timeout' => $timeout,
66 'sslverify' => $this->verifySsl,
67 ];
68
69 if (!empty($body)) {
70 $args['body'] = json_encode($body);
71 }
72
73 return wp_remote_post(
74 $this->buildRequestUrl($url, $endpoint),
75 $args
76 );
77 }
78
79
80
81
82
83
84
85
86 protected function buildRequestUrl(string $url, string $endpoint): string
87 {
88 return trailingslashit($url) . '?rest_route=/' . Rest::WPSTG_ROUTE_NAMESPACE_V1 . '/' . ltrim($endpoint, '/');
89 }
90
91
92
93
94 protected function resetHeaders()
95 {
96 $this->headers = [];
97 }
98
99
100
101
102
103
104 protected function setHttpAuth(string $username, string $password)
105 {
106 if (empty($username) || empty($password)) {
107 $this->httpAuthUsername = '';
108 $this->httpAuthPassword = '';
109
110 return;
111 }
112
113 $this->httpAuthUsername = $username;
114 $this->httpAuthPassword = $password;
115 }
116
117
118
119
120
121 protected function getAuthorizationHeader(string $token): array
122 {
123 return [
124 'Authorization' => 'Bearer ' . $token,
125 'X-WPSTG-Request' => $token,
126 ];
127 }
128 }
129