initAdapters(); self::$_request_max = getenv("cfmgr.request.max"); } final public function getAPIKey(): string { if ($this->_apikey == "") { throw new \Exception("APIKey가 정의되지 않았습니다."); } return $this->_apikey; } final public function setAPIKey(string $apikey): void { $this->_apikey = $apikey; } 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()) ); } } private function getAdapter(): Guzzle { if (!array_key_exists($this->getAPIKey(), $this->_clients)) { throw new \Exception(+__FUNCTION__ . " => {$this->getAPIKey()}에 해당하는 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[$this->getAPIKey()]; } public function getAccount(): Accounts { return new Accounts($this->getAdapter()); } public function getZone(): Zones { return new Zones($this->getAdapter()); } public function getRecord(): DNS { return new DNS($this->getAdapter()); } }