PluginProbe
PhastPress / 1.88
PhastPress v1.88
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
phastpress / classes / RequestsHTTPClient.php

RequestsHTTPClient.php in PhastPress 1.88, at classes/RequestsHTTPClient.php

58 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Kibo\PhastPlugins\PhastPress;
3
4 use Kibo\Phast\HTTP\Client;
5 use Kibo\Phast\HTTP\Exceptions\NetworkError;
6 use Kibo\Phast\HTTP\Response;
7 use Kibo\Phast\ValueObjects\URL;
8
9 class RequestsHTTPClient implements Client {
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);
15 $response->throw_for_status();
16 return $this->makePhastResponse($response);
17 }
18
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 }
23 $options = ['connect_timeout' => 10, 'timeout' => 20];
24 $response = \Requests::post((string) $url, $headers, $data, $options);
25 $response->throw_for_status();
26 return $this->makePhastResponse($response);
27 }
28
29 private function makePhastResponse(\Requests_Response $requestsResponse) {
30 $phastResponse = new Response();
31 $phastResponse->setContent($requestsResponse->body);
32 foreach ($requestsResponse->headers as $name => $value) {
33 $phastResponse->setHeader($name, $value);
34 }
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));
56 }
57 }
58