PluginProbe
PhastPress / 1.78
PhastPress v1.78
3.12 3.11 1.75 1.76 1.77 1.78 1.79 1.80 1.81 1.82 1.83 1.84 1.85 1.86 1.87 1.88 1.89 1.90 1.91 1.92 1.93 1.94 1.95 1.96 1.97 All 119 releases
← All changes | classes/RequestsHTTPClient.php +31 -6 3.111.78 View file →
@@ -4,25 +4,30 @@
4 4 use Kibo\Phast\HTTP\Client;
5 5 use Kibo\Phast\HTTP\Exceptions\NetworkError;
6 6 use Kibo\Phast\HTTP\Response;
7 7 use Kibo\Phast\ValueObjects\URL;
8 -use WpOrg\Requests\{Requests, Response as RequestsResponse};
9 8
10 9 class RequestsHTTPClient implements Client {
11 - public function get(URL $url, array $headers = []): Response {
12 - $response = Requests::get((string) $url, $headers);
10 + public function get(URL $url, array $headers = []) {
11 + if (!is_callable([\Requests::class, 'get'])) {
12 + throw new NetworkError('\\Requests::get is not available');
13 + }
14 + $response = \Requests::get((string) $url, $headers);
13 15 $response->throw_for_status();
14 16 return $this->makePhastResponse($response);
15 17 }
16 18
17 - public function post(URL $url, $data, array $headers = []): Response {
19 + public function post(URL $url, $data, array $headers = []) {
20 + if (!is_callable([\Requests::class, 'post'])) {
21 + throw new NetworkError('\\Requests::post is not available');
22 + }
18 23 $options = ['connect_timeout' => 10, 'timeout' => 20];
19 - $response = Requests::post((string) $url, $headers, $data, $options);
24 + $response = \Requests::post((string) $url, $headers, $data, $options);
20 25 $response->throw_for_status();
21 26 return $this->makePhastResponse($response);
22 27 }
23 28
24 - private function makePhastResponse(RequestsResponse $requestsResponse): Response {
29 + private function makePhastResponse(\Requests_Response $requestsResponse) {
25 30 $phastResponse = new Response();
26 31 $phastResponse->setContent($requestsResponse->body);
27 32 foreach ($requestsResponse->headers as $name => $value) {
28 33 $phastResponse->setHeader($name, $value);
@@ -27,6 +32,26 @@
27 32 foreach ($requestsResponse->headers as $name => $value) {
28 33 $phastResponse->setHeader($name, $value);
29 34 }
30 35 return $phastResponse;
36 + }
37 +
38 + public static function loadWordPressRequests() {
39 + if (class_exists(\Requests::class)) {
40 + return;
41 + }
42 + $dir = $_SERVER['SCRIPT_FILENAME'];
43 + do {
44 + $dir = dirname($dir);
45 + $classFile = "$dir/wp-includes/class-requests.php";
46 + $caFile = "$dir/wp-includes/certificates/ca-bundle.crt";
47 + if (file_exists($classFile) && file_exists($caFile)) {
48 + @include_once $classFile;
49 + if (class_exists(\Requests::class)) {
50 + \Requests::register_autoloader();
51 + \Requests::set_certificate_path($caFile);
52 + return;
53 + }
54 + }
55 + } while ($dir != dirname($dir));
31 56 }
32 57 }