/var/www/hkosl.com/littleark/webadmin/libraies/google/auth/src/FetchAuthTokenCache.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
<?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();
    }
}