initAdapters(); self::$_request_max = getenv("cfmgr.request.max"); } final protected function getAccountModel(): AccountModel { if ($this->_accountModel === null) { $this->_accountModel = new AccountModel(); } return $this->_accountModel; } final public function initAdapters(): void { foreach ($this->getAccountModel()->getEntitys() as $entity) { $this->_clients[$entity->getAPIKey()] = new Guzzle( new APIKey($entity->getTitle(), $entity->getAPIKey()) ); } } public function request(string $apikey): Guzzle { if (!array_key_exists($apikey, $this->_clients)) { throw new \Exception(+__FUNCTION__ . " => {$apikey}에 해당하는 Adapter를 찾을수 없습니다."); } if (self::$_request >= self::$_request_max) { log_message('warning', sprintf("--Cloudflare API Call %s초 대기 시작--", self::$_request_timewait)); sleep(intval(getenv("cf.mgr.request.time.wait"))); self::$_request = 0; log_message('warning', sprintf("--Cloudflare API Call %s초 대기 종료--", self::$_request_timewait)); } self::$_request++; return $this->_clients[$apikey]; } // public function getAccount(string $apikey): Accounts // { // return new Accounts($this->request($apikey)); // } // public function getZone(string $apikey): Zones // { // return new Zones($this->request($apikey)); // } // public function getRecord(string $apikey): DNS // { // return new DNS($this->request($apikey)); // } }