51 lines
1.6 KiB
PHP
51 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Libraries\MySocket;
|
|
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use GuzzleHttp\Client;
|
|
use App\Entities\Cloudflare\AuthEntity;
|
|
|
|
class CloudflareSocket extends MySocket
|
|
{
|
|
private ?Client $_client = null;
|
|
public static int $_request = 0;
|
|
private static int $_request_max = 1000;
|
|
private static int $_request_timewait = 30;
|
|
private ?AuthEntity $_auth_entity = null;
|
|
public function __construct(AuthEntity $auth_entity)
|
|
{
|
|
parent::__construct();
|
|
$this->_auth_entity = $auth_entity;
|
|
}
|
|
public function getClient(): Client
|
|
{
|
|
if ($this->_client === null) {
|
|
$this->_client = new Client([
|
|
'base_uri' => 'https://api.cloudflare.com/client/v4/',
|
|
'headers' => [
|
|
'X-Auth-Email' => $this->_auth_entity->getID(),
|
|
'X-Auth-Key' => $this->_auth_entity->getAuthKey(),
|
|
'Accept' => 'application/json'
|
|
],
|
|
'verify' => env("socket.web.ssl.verify") ?? false, // SSL 인증서 검증을 비활성화
|
|
'User-Agent' => $this->getUserAgent()
|
|
]);
|
|
}
|
|
return $this->_client;
|
|
}
|
|
//override
|
|
public function request(string $method, $uri = '', array $options = [], array $headers = []): ResponseInterface
|
|
{
|
|
if (self::$_request >= self::$_request_max) {
|
|
log_message('warning', sprintf("--Cloudflare API Call %s초 대기 시작--", self::$_request_timewait));
|
|
sleep(intval(self::$_request_timewait));
|
|
self::$_request = 0;
|
|
log_message('warning', sprintf("--Cloudflare API Call %s초 대기 종료--", self::$_request_timewait));
|
|
}
|
|
self::$_request++;
|
|
// log_message("debug", "현재 request:[" . self::$_request . "]");
|
|
return parent::request($method, $uri, $options, $headers);
|
|
}
|
|
}
|