| @@ -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 | } |