123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- <?php
- /*
- * Copyright 2010 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- namespace Google\Auth;
-
- use Psr\Cache\CacheItemPoolInterface;
-
- /**
- * A class to implement caching for any object implementing
- * FetchAuthTokenInterface
- */
- class FetchAuthTokenCache implements FetchAuthTokenInterface
- {
- use CacheTrait;
-
- /**
- * @var FetchAuthTokenInterface
- */
- private $fetcher;
-
- /**
- * @var array
- */
- private $cacheConfig;
-
- /**
- * @var CacheItemPoolInterface
- */
- private $cache;
-
- public function __construct(
- FetchAuthTokenInterface $fetcher,
- array $cacheConfig = null,
- CacheItemPoolInterface $cache
- ) {
- $this->fetcher = $fetcher;
- $this->cache = $cache;
- $this->cacheConfig = array_merge([
- 'lifetime' => 1500,
- 'prefix' => '',
- ], (array) $cacheConfig);
- }
-
- /**
- * Implements FetchAuthTokenInterface#fetchAuthToken.
- *
- * Checks the cache for a valid auth token and fetches the auth tokens
- * from the supplied fetcher.
- *
- * @param callable $httpHandler callback which delivers psr7 request
- *
- * @return array the response
- *
- * @throws \Exception
- */
- public function fetchAuthToken(callable $httpHandler = null)
- {
- // Use the cached value if its available.
- //
- // TODO: correct caching; update the call to setCachedValue to set the expiry
- // to the value returned with the auth token.
- //
- // TODO: correct caching; enable the cache to be cleared.
- $cacheKey = $this->fetcher->getCacheKey();
- $cached = $this->getCachedValue($cacheKey);
- if (!empty($cached)) {
- return ['access_token' => $cached];
- }
-
- $auth_token = $this->fetcher->fetchAuthToken($httpHandler);
-
- if (isset($auth_token['access_token'])) {
- $this->setCachedValue($cacheKey, $auth_token['access_token']);
- }
-
- return $auth_token;
- }
-
- /**
- * @return string
- */
- public function getCacheKey()
- {
- return $this->getFullCacheKey($this->fetcher->getCacheKey());
- }
-
- /**
- * @return array|null
- */
- public function getLastReceivedToken()
- {
- return $this->fetcher->getLastReceivedToken();
- }
- }
|