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

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\Psr16Cache;
  10. use Symfony\Component\Cache\Simple\Psr6Cache;
  11. class ProjectFactory
  12. {
  13.     /** @var Factory */
  14.     private $firebaseFactory;
  15.     /** @var CacheInterface|null */
  16.     private $verifierCache;
  17.     /** @var LoggerInterface|null */
  18.     private $httpRequestLogger;
  19.     /** @var LoggerInterface|null */
  20.     private $httpRequestDebugLogger;
  21.     public function __construct(Factory $firebaseFactory)
  22.     {
  23.         $this->firebaseFactory $firebaseFactory;
  24.     }
  25.     /**
  26.      * @param CacheInterface|CacheItemPoolInterface $verifierCache
  27.      */
  28.     public function setVerifierCache($verifierCache null): void
  29.     {
  30.         if ($verifierCache instanceof CacheItemPoolInterface) {
  31.             if (\class_exists(Psr16Cache::class)) { // Symfony ^4.2|^5.0
  32.                 $verifierCache = new Psr16Cache($verifierCache);
  33.             } elseif (\class_exists(Psr6Cache::class)) { // Symfony 3.4
  34.                 $verifierCache = new Psr6Cache($verifierCache);
  35.             }
  36.         }
  37.         $this->verifierCache $verifierCache;
  38.     }
  39.     public function setHttpRequestLogger(?LoggerInterface $logger null): void
  40.     {
  41.         $this->httpRequestLogger $logger;
  42.     }
  43.     public function setHttpRequestDebugLogger(?LoggerInterface $logger null): void
  44.     {
  45.         $this->httpRequestDebugLogger $logger;
  46.     }
  47.     public function createFactory(array $config = []): Factory
  48.     {
  49.         $factory = clone $this->firebaseFactory// Ensure a new instance
  50.         if ($config['credentials'] ?? null) {
  51.             $factory $factory
  52.                 ->withServiceAccount($config['credentials'])
  53.                 ->withDisabledAutoDiscovery();
  54.         }
  55.         if ($config['database_uri'] ?? null) {
  56.             $factory $factory->withDatabaseUri($config['database_uri']);
  57.         }
  58.         if ($this->verifierCache) {
  59.             $factory $factory->withVerifierCache($this->verifierCache);
  60.         }
  61.         if ($this->httpRequestLogger) {
  62.             $factory $factory->withHttpLogger($this->httpRequestLogger);
  63.         }
  64.         if ($this->httpRequestDebugLogger) {
  65.             $factory $factory->withHttpDebugLogger($this->httpRequestDebugLogger);
  66.         }
  67.         return $factory;
  68.     }
  69.     public function createAuth(array $config = []): Firebase\Auth
  70.     {
  71.         return $this->createFactory($config)->createAuth();
  72.     }
  73.     public function createDatabase(array $config = []): Firebase\Database
  74.     {
  75.         return $this->createFactory($config)->createDatabase();
  76.     }
  77.     public function createFirestore(array $config = []): Firebase\Firestore
  78.     {
  79.         return $this->createFactory($config)->createFirestore();
  80.     }
  81.     public function createMessaging(array $config = []): Firebase\Messaging
  82.     {
  83.         return $this->createFactory($config)->createMessaging();
  84.     }
  85.     public function createRemoteConfig(array $config = []): Firebase\RemoteConfig
  86.     {
  87.         return $this->createFactory($config)->createRemoteConfig();
  88.     }
  89.     public function createStorage(array $config = []): Firebase\Storage
  90.     {
  91.         return $this->createFactory($config)->createStorage();
  92.     }
  93.     public function createDynamicLinksService(array $config = []): Firebase\DynamicLinks
  94.     {
  95.         $defaultDynamicLinksDomain $config['default_dynamic_links_domain'] ?? null;
  96.         return $this->createFactory($config)->createDynamicLinksService($defaultDynamicLinksDomain);
  97.     }
  98. }