cfmgrv4/app/Libraries/MySocket/CloudflareSocket.php
2024-10-22 12:29:38 +09:00

53 lines
1.7 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 = 10;
private ?AuthEntity $_auth_entity = null;
public function __construct(AuthEntity $auth_entity)
{
parent::__construct();
$this->_auth_entity = $auth_entity;
self::$_request_max = env("cfmgr.request.max") ?? 1000;
self::$_request_timewait = env("cfmgr.request.timewait") ?? 10;
}
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);
}
}