vk/system/Browsers/Curl.php

67 lines
1.8 KiB
PHP

<?php
declare(strict_types=1);
namespace VK\Browsers;
use VK\Core;
use Exception;
/**
* Реализация CURL
*
* @method protected static put(string $url, ...$params) Создать
*
* @package Browsers
* @author Arsen Mirzaev
*/
class Curl extends BrowserAbstract
{
/**
* Изменить
*
* Для запросов на изменение (REST)
* Реализация HTTP POST
*
* @param string $url Запрашиваемая ссылка
* @param array $params Передаваемые параметры
*
* @return array Ответ сервера
*/
public static function post(string $url, array $params = null): array
{
$c = curl_init();
curl_setopt($c, CURLOPT_HTTPHEADER, [
'Content-Type: multipart/form-data'
]);
curl_setopt($c, CURLOPT_URL, $url);
curl_setopt($c, CURLOPT_POSTFIELDS, $params);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 0);
$result = json_decode(curl_exec($c), True);
curl_close($c);
if (isset($result['response'])) {
return $result;
} else if (isset($result['error'])) {
throw new Exception(json_encode($result), $result['error']['error_code']);
} else if (!isset($result)) {
self::post($url, $params);
} else {
return ['response' => $result];
}
}
protected static function checkSSL($domain)
{
$ssl_check = @fsockopen('ssl://' . $domain, 443, $errno, $errstr, 30);
$res = !!$ssl_check;
if ($ssl_check) {
fclose($ssl_check);
}
return $res;
}
}