source: vendor/google/auth/src/CacheTrait.php@ e3d4e0a

Last change on this file since e3d4e0a was e3d4e0a, checked in by Vlado 222039 <vlado.popovski@…>, 7 days ago

Upload project files

  • Property mode set to 100644
File size: 2.5 KB
Line 
1<?php
2/*
3 * Copyright 2015 Google Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18namespace Google\Auth;
19
20use Psr\Cache\CacheItemPoolInterface;
21
22trait CacheTrait
23{
24 /**
25 * @var int
26 */
27 private $maxKeyLength = 64;
28
29 /**
30 * @var array<mixed>
31 */
32 private $cacheConfig;
33
34 /**
35 * @var ?CacheItemPoolInterface
36 */
37 private $cache;
38
39 /**
40 * Gets the cached value if it is present in the cache when that is
41 * available.
42 *
43 * @param mixed $k
44 *
45 * @return mixed
46 */
47 private function getCachedValue($k)
48 {
49 if (is_null($this->cache)) {
50 return null;
51 }
52
53 $key = $this->getFullCacheKey($k);
54 if (is_null($key)) {
55 return null;
56 }
57
58 $cacheItem = $this->cache->getItem($key);
59 if ($cacheItem->isHit()) {
60 return $cacheItem->get();
61 }
62 }
63
64 /**
65 * Saves the value in the cache when that is available.
66 *
67 * @param mixed $k
68 * @param mixed $v
69 * @return mixed
70 */
71 private function setCachedValue($k, $v)
72 {
73 if (is_null($this->cache)) {
74 return null;
75 }
76
77 $key = $this->getFullCacheKey($k);
78 if (is_null($key)) {
79 return null;
80 }
81
82 $cacheItem = $this->cache->getItem($key);
83 $cacheItem->set($v);
84 $cacheItem->expiresAfter($this->cacheConfig['lifetime']);
85 return $this->cache->save($cacheItem);
86 }
87
88 /**
89 * @param null|string $key
90 * @return null|string
91 */
92 private function getFullCacheKey($key)
93 {
94 if (is_null($key)) {
95 return null;
96 }
97
98 $key = $this->cacheConfig['prefix'] . $key;
99
100 // ensure we do not have illegal characters
101 $key = preg_replace('|[^a-zA-Z0-9_\.!]|', '', $key);
102
103 // Hash keys if they exceed $maxKeyLength (defaults to 64)
104 if ($this->maxKeyLength && strlen($key) > $this->maxKeyLength) {
105 $key = substr(hash('sha256', $key), 0, $this->maxKeyLength);
106 }
107
108 return $key;
109 }
110}
Note: See TracBrowser for help on using the repository browser.