API.php
См. документацию.
1 <?php
2 
3 /**
4  * @file
5  * @brief серверные api запросы
6  *
7  */
8 
9 namespace Wrong\Curl;
10 
11 use Wrong\Start\Env;
12 
13 /**
14  * @brief API отвечает за http запросы к серверу
15  *
16  */
17 
18 class API
19 {
20  /**
21  * делает запрос на сервер и возвращает json раскодированный ответ в виде объекта либо строки в случае если раскодировка не удалась
22  *
23  * @param string $request Запрос, который вы хотите сделать.
24  * @param string $method Используемый HTTP-метод.
25  * @param string $data urlencode данные для отправки на сервер.
26  * @param headers массив заголовков для отправки с запросом
27  * @param float $timeout таймаут выполнения в секундах, допускается использование дробных чисел 0.001 если запросу требуется отвалиться сразу же, не дожидаясь ответа
28  *
29  * @return object|string Ответ на запрос.
30  */
31  public static function req($request, $method = 'GET', $data = '', $headers = [], $timeout = 0)
32  {
33 
34  switch (Env::$e->SERVER_PORT) {
35  case 80:
36  $CURLOPT_URL = 'http://' . Env::$e->SERVER_ADDR . $request;
37  break;
38  case 443:
39  $CURLOPT_URL = 'https://' . Env::$e->HTTP_HOST . $request;
40  break;
41  default:
42  $CURLOPT_URL = 'http://' . Env::$e->HTTP_HOST . $request;
43  break;
44  }
45 
46  $curl = curl_init();
47  curl_setopt_array($curl, array(
48  CURLOPT_URL => $CURLOPT_URL,
49  CURLOPT_HEADER => false,
50  CURLOPT_RETURNTRANSFER => true,
51  CURLOPT_ENCODING => '',
52  CURLOPT_MAXREDIRS => 10,
53  CURLOPT_TIMEOUT_MS => $timeout * 1000,
54  CURLOPT_FOLLOWLOCATION => true,
55  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
56  CURLOPT_SSL_VERIFYPEER => false,
57  CURLOPT_CUSTOMREQUEST => $method,
58  CURLOPT_POSTFIELDS => $data,
59  CURLOPT_HTTPHEADER => array_merge(['Host: ' . Env::$e->HTTP_HOST], $headers)
60  ));
61 
62  $response = curl_exec($curl);
63  curl_close($curl);
64  $json = json_decode($response);
65  return $json ?: $response;
66  }
67 
68  /**
69  * делает запрос на любое внешнее API и возвращает json раскодированный ответ в виде объекта либо строки в случае если раскодировка не удалась
70  *
71  * @param string $url Запрос на который вы хотите сделать.
72  * @param string $method Используемый HTTP-метод.
73  * @param string $data urlencode данные для отправки на сервер.
74  * @param headers массив заголовков для отправки с запросом
75  * @param float $timeout таймаут выполнения в секундах, допускается использование дробных чисел 0.001 если запросу требуется отвалиться сразу же, не дожидаясь ответа
76  *
77  * @return object|string Ответ на запрос.
78  */
79  public static function req_external($url, $method = 'GET', $data = '', $headers = [], $timeout = 0)
80  {
81 
82  $curl = curl_init();
83 
84  curl_setopt_array($curl, array(
85  CURLOPT_URL => $url,
86  CURLOPT_HEADER => false,
87  CURLOPT_RETURNTRANSFER => true,
88  CURLOPT_ENCODING => '',
89  CURLOPT_MAXREDIRS => 10,
90  CURLOPT_TIMEOUT_MS => $timeout * 1000,
91  CURLOPT_FOLLOWLOCATION => true,
92  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
93  CURLOPT_SSL_VERIFYPEER => false,
94  CURLOPT_CUSTOMREQUEST => $method,
95  CURLOPT_POSTFIELDS => $data,
96  CURLOPT_HTTPHEADER => $headers,
97  ));
98 
99  $response = curl_exec($curl);
100  curl_close($curl);
101  $json = json_decode($response);
102  return $json ?: $response;
103  }
104 }
if(! $response->_meta) $data
Definition: anycomment.php:18
$response
Definition: anycomment.php:12
API отвечает за http запросы к серверу
Definition: API.php:19
static req_external($url, $method='GET', $data='', $headers=[], $timeout=0)
Definition: API.php:79
static req($request, $method='GET', $data='', $headers=[], $timeout=0)
Definition: API.php:31
Env класс управляющий, добавляющий или записывающий переменные среды
Definition: Env.php:17
static $e
Definition: Env.php:22
if(!($row=Wrong\Models\Crontabs::find($_GET['id']))) if($row->method=='CLI') $headers
catch(\Throwable $th) $request
Definition: session.php:28