|
38 | 38 | use Kreait\Firebase\JWT\SessionCookieVerifier; |
39 | 39 | use Kreait\Firebase\Messaging\AppInstanceApiClient; |
40 | 40 | use Kreait\Firebase\Messaging\RequestFactory; |
| 41 | +use Kreait\Firebase\Valinor\Mapper; |
| 42 | +use Kreait\Firebase\Valinor\Normalizer; |
| 43 | +use Kreait\Firebase\Valinor\Source; |
41 | 44 | use Psr\Cache\CacheItemPoolInterface; |
42 | 45 | use Psr\Clock\ClockInterface; |
43 | 46 | use Psr\Http\Message\UriInterface; |
@@ -134,6 +137,14 @@ final class Factory |
134 | 137 | */ |
135 | 138 | private array $firestoreClientConfig = []; |
136 | 139 |
|
| 140 | + private mixed $mapperCache = null; |
| 141 | + |
| 142 | + private mixed $normalizerCache = null; |
| 143 | + |
| 144 | + private ?Mapper $mapper = null; |
| 145 | + |
| 146 | + private ?Normalizer $normalizer = null; |
| 147 | + |
137 | 148 | public function __construct() |
138 | 149 | { |
139 | 150 | $this->clock = SystemClock::create(); |
@@ -308,6 +319,24 @@ public function withKeySetCache(CacheItemPoolInterface $cache): self |
308 | 319 | return $factory; |
309 | 320 | } |
310 | 321 |
|
| 322 | + public function withMapperCache(mixed $cache): self |
| 323 | + { |
| 324 | + $factory = clone $this; |
| 325 | + $factory->mapperCache = $cache; |
| 326 | + $factory->mapper = null; |
| 327 | + |
| 328 | + return $factory; |
| 329 | + } |
| 330 | + |
| 331 | + public function withNormalizerCache(mixed $cache): self |
| 332 | + { |
| 333 | + $factory = clone $this; |
| 334 | + $factory->normalizerCache = $cache; |
| 335 | + $factory->normalizer = null; |
| 336 | + |
| 337 | + return $factory; |
| 338 | + } |
| 339 | + |
311 | 340 | public function withHttpClientOptions(HttpClientOptions $options): self |
312 | 341 | { |
313 | 342 | $factory = clone $this; |
@@ -711,6 +740,16 @@ private function createIdTokenVerifier(): IdTokenVerifier |
711 | 740 | return $verifier->withExpectedTenantId($this->tenantId); |
712 | 741 | } |
713 | 742 |
|
| 743 | + private function getMapper(): Mapper |
| 744 | + { |
| 745 | + return $this->mapper ??= new Mapper($this->mapperCache); |
| 746 | + } |
| 747 | + |
| 748 | + private function getNormalizer(): Normalizer |
| 749 | + { |
| 750 | + return $this->normalizer ??= new Normalizer($this->normalizerCache); |
| 751 | + } |
| 752 | + |
714 | 753 | private function createSessionCookieVerifier(): SessionCookieVerifier |
715 | 754 | { |
716 | 755 | return SessionCookieVerifier::createWithProjectIdAndCache($this->getProjectId(), $this->verifierCache ?? $this->defaultCache); |
|
0 commit comments