PluginProbe ʕ •ᴥ•ʔ
WP STAGING – WordPress Backups, Restore, Migration & Clone / 4.11.1
WP STAGING – WordPress Backups, Restore, Migration & Clone v4.11.1
4.11.2 4.11.1 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 week ago ArrayableTrait.php 1 week ago BatchSizeCalculateTrait.php 1 week ago BearerTokenTrait.php 1 week ago BenchmarkTrait.php 1 week ago BooleanTransientTrait.php 1 week ago DatabaseSearchReplaceTrait.php 1 week ago DbRowsGeneratorTrait.php 1 week ago DebugLogTrait.php 1 week ago DeveloperTimerTrait.php 1 week ago EndOfLinePlaceholderTrait.php 1 week ago EventLoggerTrait.php 1 week ago FileScanToCacheTrait.php 1 week ago FormatTrait.php 1 week ago HttpRequestTrait.php 1 week ago HydrateTrait.php 1 week ago I18nTrait.php 1 week ago IpResolverTrait.php 1 week ago JobResponseTrait.php 1 week ago MaintenanceTrait.php 7 months ago MemoryExhaustTrait.php 1 week ago MySQLRowsGeneratorTrait.php 1 week ago NoticesTrait.php 1 week ago PagesTrait.php 1 week ago PropertyConstructor.php 1 week ago RenameTmpDirectoryTrait.php 1 week ago ResourceTrait.php 1 week ago RestRequestTrait.php 1 week ago RestoreFileExclusionTrait.php 1 week ago SafeFileInfoTrait.php 1 week ago SerializeTrait.php 1 week ago SetTimeLimitTrait.php 1 week ago SlashTrait.php 1 week ago SqlCommentTrait.php 1 week ago TablePrefixValidator.php 5 months ago UrlTrait.php 1 week ago ValueGetterTrait.php 1 week ago WindowsOsTrait.php 1 week 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