vendor/kreait/firebase-bundle/src/DependencyInjection/Factory/ProjectFactory.php line 114

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Kreait\Firebase\Symfony\Bundle\DependencyInjection\Factory;
  4. use Kreait\Firebase;
  5. use Kreait\Firebase\Factory;
  6. use Psr\Cache\CacheItemPoolInterface;
  7. use Psr\Log\LoggerInterface;
  8. use Psr\SimpleCache\CacheInterface;
  9. use Symfony\Component\Cache\Adapter\Psr16Adapter;
  10. use Symfony\Component\Cache\Psr16Cache;
  11. class ProjectFactory
  12. {
  13.     private Factory $firebaseFactory;
  14.     private ?CacheInterface $verifierCache null;
  15.     private ?CacheItemPoolInterface $authTokenCache null;
  16.     private ?LoggerInterface $httpRequestLogger null;
  17.     private ?LoggerInterface $httpRequestDebugLogger null;
  18.     public function __construct(Factory $firebaseFactory)
  19.     {
  20.         $this->firebaseFactory $firebaseFactory;
  21.     }
  22.     /**
  23.      * @param CacheInterface|CacheItemPoolInterface $verifierCache
  24.      */
  25.     public function setVerifierCache($verifierCache null): void
  26.     {
  27.         if ($verifierCache instanceof CacheItemPoolInterface) {
  28.             $verifierCache = new Psr16Cache($verifierCache);
  29.         }
  30.         $this->verifierCache $verifierCache;
  31.     }
  32.     /**
  33.      * @param CacheInterface|CacheItemPoolInterface|null $authTokenCache
  34.      */
  35.     public function setAuthTokenCache($authTokenCache null): void
  36.     {
  37.         if ($authTokenCache instanceof CacheInterface) {
  38.             $authTokenCache = new Psr16Adapter($authTokenCache);
  39.         }
  40.         $this->authTokenCache $authTokenCache;
  41.     }
  42.     public function setHttpRequestLogger(?LoggerInterface $logger null): void
  43.     {
  44.         $this->httpRequestLogger $logger;
  45.     }
  46.     public function setHttpRequestDebugLogger(?LoggerInterface $logger null): void
  47.     {
  48.         $this->httpRequestDebugLogger $logger;
  49.     }
  50.     public function createAuth(array $config = []): Firebase\Contract\Auth
  51.     {
  52.         return $this->createFactory($config)->createAuth();
  53.     }
  54.     public function createFactory(array $config = []): Factory
  55.     {
  56.         $factory = clone $this->firebaseFactory// Ensure a new instance
  57.         if ($config['credentials'] ?? null) {
  58.             $factory $factory
  59.                 ->withServiceAccount($config['credentials'])
  60.                 ->withDisabledAutoDiscovery();
  61.         }
  62.         if ($config['database_uri'] ?? null) {
  63.             $factory $factory->withDatabaseUri($config['database_uri']);
  64.         }
  65.         if ($config['tenant_id'] ?? null) {
  66.             $factory $factory->withTenantId($config['tenant_id']);
  67.         }
  68.         if ($this->verifierCache) {
  69.             $factory $factory->withVerifierCache($this->verifierCache);
  70.         }
  71.         if ($this->authTokenCache) {
  72.             $factory $factory->withAuthTokenCache($this->authTokenCache);
  73.         }
  74.         if ($this->httpRequestLogger) {
  75.             $factory $factory->withHttpLogger($this->httpRequestLogger);
  76.         }
  77.         if ($this->httpRequestDebugLogger) {
  78.             $factory $factory->withHttpDebugLogger($this->httpRequestDebugLogger);
  79.         }
  80.         return $factory;
  81.     }
  82.     public function createDatabase(array $config = []): Firebase\Contract\Database
  83.     {
  84.         return $this->createFactory($config)->createDatabase();
  85.     }
  86.     public function createFirestore(array $config = []): Firebase\Contract\Firestore
  87.     {
  88.         return $this->createFactory($config)->createFirestore();
  89.     }
  90.     public function createMessaging(array $config = []): Firebase\Contract\Messaging
  91.     {
  92.         return $this->createFactory($config)->createMessaging();
  93.     }
  94.     public function createRemoteConfig(array $config = []): Firebase\Contract\RemoteConfig
  95.     {
  96.         return $this->createFactory($config)->createRemoteConfig();
  97.     }
  98.     public function createStorage(array $config = []): Firebase\Contract\Storage
  99.     {
  100.         return $this->createFactory($config)->createStorage();
  101.     }
  102.     public function createDynamicLinksService(array $config = []): Firebase\Contract\DynamicLinks
  103.     {
  104.         $defaultDynamicLinksDomain $config['default_dynamic_links_domain'] ?? null;
  105.         return $this->createFactory($config)->createDynamicLinksService($defaultDynamicLinksDomain);
  106.     }
  107. }