new \DeliciousBrains\WP_Offload_Media\Gcp\Google\Auth\Cache\MemoryCacheItemPool(), 'authCacheOptions' => [], 'credentialsFetcher' => null, 'keyFile' => null, 'requestTimeout' => null, 'retries' => 3, 'scopes' => null]; if ($config['credentialsFetcher'] && !$config['credentialsFetcher'] instanceof FetchAuthTokenInterface) { throw new \InvalidArgumentException('credentialsFetcher must implement FetchAuthTokenInterface.'); } if (!$config['authCache'] instanceof CacheItemPoolInterface) { throw new \InvalidArgumentException('authCache must implement CacheItemPoolInterface.'); } $this->authCache = $config['authCache']; $this->authCacheOptions = $config['authCacheOptions']; $this->credentialsFetcher = $config['credentialsFetcher']; $this->retries = $config['retries']; $this->scopes = $config['scopes']; $this->keyFile = $config['keyFile']; $this->requestTimeout = $config['requestTimeout']; } /** * Get the Keyfile. * * @return array */ public function keyFile() { return $this->keyFile; } /** * Gets the credentials fetcher and sets up caching. Precedence is as * follows: * * - A user supplied credentials fetcher instance. * - Credentials created from a keyfile. * - Application default credentials. * - Anonymous credentials. * * @return FetchAuthTokenInterface */ public function getCredentialsFetcher() { $fetcher = null; if ($this->credentialsFetcher) { $fetcher = $this->credentialsFetcher; } elseif ($this->keyFile) { $fetcher = \DeliciousBrains\WP_Offload_Media\Gcp\Google\Auth\CredentialsLoader::makeCredentials($this->scopes, $this->keyFile); } else { try { $fetcher = $this->getADC(); } catch (\DomainException $ex) { $fetcher = new \DeliciousBrains\WP_Offload_Media\Gcp\Google\Cloud\Core\AnonymousCredentials(); } } return new \DeliciousBrains\WP_Offload_Media\Gcp\Google\Auth\FetchAuthTokenCache($fetcher, $this->authCacheOptions, $this->authCache); } /** * Returns application default credentials. Abstracted out for unit testing. * * @return FetchAuthTokenInterface * @throws \DomainException */ protected function getADC() { return \DeliciousBrains\WP_Offload_Media\Gcp\Google\Auth\ApplicationDefaultCredentials::getCredentials($this->scopes, $this->authHttpHandler); } }