Deprecated: Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 58

Deprecated: Constant E_STRICT is deprecated in /home/pastorz/old-espace-client/vendor/symfony/error-handler/ErrorHandler.php on line 76
Symfony Profiler

vendor/symfony/notifier/Transport.php line 143

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Symfony\Component\Notifier;
  11. use Symfony\Component\Notifier\Bridge\AllMySms\AllMySmsTransportFactory;
  12. use Symfony\Component\Notifier\Bridge\AmazonSns\AmazonSnsTransportFactory;
  13. use Symfony\Component\Notifier\Bridge\Clickatell\ClickatellTransportFactory;
  14. use Symfony\Component\Notifier\Bridge\Discord\DiscordTransportFactory;
  15. use Symfony\Component\Notifier\Bridge\Esendex\EsendexTransportFactory;
  16. use Symfony\Component\Notifier\Bridge\Expo\ExpoTransportFactory;
  17. use Symfony\Component\Notifier\Bridge\Firebase\FirebaseTransportFactory;
  18. use Symfony\Component\Notifier\Bridge\FreeMobile\FreeMobileTransportFactory;
  19. use Symfony\Component\Notifier\Bridge\GatewayApi\GatewayApiTransportFactory;
  20. use Symfony\Component\Notifier\Bridge\Gitter\GitterTransportFactory;
  21. use Symfony\Component\Notifier\Bridge\Infobip\InfobipTransportFactory;
  22. use Symfony\Component\Notifier\Bridge\Iqsms\IqsmsTransportFactory;
  23. use Symfony\Component\Notifier\Bridge\LightSms\LightSmsTransportFactory;
  24. use Symfony\Component\Notifier\Bridge\Mailjet\MailjetTransportFactory;
  25. use Symfony\Component\Notifier\Bridge\Mattermost\MattermostTransportFactory;
  26. use Symfony\Component\Notifier\Bridge\MessageBird\MessageBirdTransportFactory;
  27. use Symfony\Component\Notifier\Bridge\MessageMedia\MessageMediaTransportFactory;
  28. use Symfony\Component\Notifier\Bridge\MicrosoftTeams\MicrosoftTeamsTransportFactory;
  29. use Symfony\Component\Notifier\Bridge\Mobyt\MobytTransportFactory;
  30. use Symfony\Component\Notifier\Bridge\Nexmo\NexmoTransportFactory;
  31. use Symfony\Component\Notifier\Bridge\Octopush\OctopushTransportFactory;
  32. use Symfony\Component\Notifier\Bridge\OvhCloud\OvhCloudTransportFactory;
  33. use Symfony\Component\Notifier\Bridge\RocketChat\RocketChatTransportFactory;
  34. use Symfony\Component\Notifier\Bridge\Sendinblue\SendinblueTransportFactory;
  35. use Symfony\Component\Notifier\Bridge\Sinch\SinchTransportFactory;
  36. use Symfony\Component\Notifier\Bridge\Slack\SlackTransportFactory;
  37. use Symfony\Component\Notifier\Bridge\Sms77\Sms77TransportFactory;
  38. use Symfony\Component\Notifier\Bridge\Smsapi\SmsapiTransportFactory;
  39. use Symfony\Component\Notifier\Bridge\SmsBiuras\SmsBiurasTransportFactory;
  40. use Symfony\Component\Notifier\Bridge\Smsc\SmscTransportFactory;
  41. use Symfony\Component\Notifier\Bridge\Telegram\TelegramTransportFactory;
  42. use Symfony\Component\Notifier\Bridge\Telnyx\TelnyxTransportFactory;
  43. use Symfony\Component\Notifier\Bridge\TurboSms\TurboSmsTransportFactory;
  44. use Symfony\Component\Notifier\Bridge\Twilio\TwilioTransportFactory;
  45. use Symfony\Component\Notifier\Bridge\Vonage\VonageTransportFactory;
  46. use Symfony\Component\Notifier\Bridge\Yunpian\YunpianTransportFactory;
  47. use Symfony\Component\Notifier\Bridge\Zulip\ZulipTransportFactory;
  48. use Symfony\Component\Notifier\Exception\UnsupportedSchemeException;
  49. use Symfony\Component\Notifier\Transport\Dsn;
  50. use Symfony\Component\Notifier\Transport\FailoverTransport;
  51. use Symfony\Component\Notifier\Transport\NullTransportFactory;
  52. use Symfony\Component\Notifier\Transport\RoundRobinTransport;
  53. use Symfony\Component\Notifier\Transport\TransportFactoryInterface;
  54. use Symfony\Component\Notifier\Transport\TransportInterface;
  55. use Symfony\Component\Notifier\Transport\Transports;
  56. use Symfony\Contracts\EventDispatcher\EventDispatcherInterface;
  57. use Symfony\Contracts\HttpClient\HttpClientInterface;
  58. /**
  59.  * @author Fabien Potencier <fabien@symfony.com>
  60.  *
  61.  * @final since Symfony 5.4
  62.  */
  63. class Transport
  64. {
  65.     private const FACTORY_CLASSES = [
  66.         AllMySmsTransportFactory::class,
  67.         AmazonSnsTransportFactory::class,
  68.         ClickatellTransportFactory::class,
  69.         DiscordTransportFactory::class,
  70.         EsendexTransportFactory::class,
  71.         ExpoTransportFactory::class,
  72.         FirebaseTransportFactory::class,
  73.         FreeMobileTransportFactory::class,
  74.         GatewayApiTransportFactory::class,
  75.         GitterTransportFactory::class,
  76.         InfobipTransportFactory::class,
  77.         IqsmsTransportFactory::class,
  78.         LightSmsTransportFactory::class,
  79.         MailjetTransportFactory::class,
  80.         MattermostTransportFactory::class,
  81.         MessageBirdTransportFactory::class,
  82.         MessageMediaTransportFactory::class,
  83.         MicrosoftTeamsTransportFactory::class,
  84.         MobytTransportFactory::class,
  85.         NexmoTransportFactory::class,
  86.         OctopushTransportFactory::class,
  87.         OvhCloudTransportFactory::class,
  88.         RocketChatTransportFactory::class,
  89.         SendinblueTransportFactory::class,
  90.         SinchTransportFactory::class,
  91.         SlackTransportFactory::class,
  92.         Sms77TransportFactory::class,
  93.         SmsapiTransportFactory::class,
  94.         SmsBiurasTransportFactory::class,
  95.         SmscTransportFactory::class,
  96.         TelegramTransportFactory::class,
  97.         TelnyxTransportFactory::class,
  98.         TurboSmsTransportFactory::class,
  99.         TwilioTransportFactory::class,
  100.         VonageTransportFactory::class,
  101.         YunpianTransportFactory::class,
  102.         ZulipTransportFactory::class,
  103.     ];
  104.     private $factories;
  105.     public static function fromDsn(string $dsnEventDispatcherInterface $dispatcher nullHttpClientInterface $client null): TransportInterface
  106.     {
  107.         $factory = new self(self::getDefaultFactories($dispatcher$client));
  108.         return $factory->fromString($dsn);
  109.     }
  110.     public static function fromDsns(array $dsnsEventDispatcherInterface $dispatcher nullHttpClientInterface $client null): TransportInterface
  111.     {
  112.         $factory = new self(iterator_to_array(self::getDefaultFactories($dispatcher$client)));
  113.         return $factory->fromStrings($dsns);
  114.     }
  115.     /**
  116.      * @param TransportFactoryInterface[] $factories
  117.      */
  118.     public function __construct(iterable $factories)
  119.     {
  120.         $this->factories $factories;
  121.     }
  122.     public function fromStrings(array $dsns): Transports
  123.     {
  124.         $transports = [];
  125.         foreach ($dsns as $name => $dsn) {
  126.             $transports[$name] = $this->fromString($dsn);
  127.         }
  128.         return new Transports($transports);
  129.     }
  130.     public function fromString(string $dsn): TransportInterface
  131.     {
  132.         $dsns preg_split('/\s++\|\|\s++/'$dsn);
  133.         if (\count($dsns) > 1) {
  134.             return new FailoverTransport($this->createFromDsns($dsns));
  135.         }
  136.         $dsns preg_split('/\s++&&\s++/'$dsn);
  137.         if (\count($dsns) > 1) {
  138.             return new RoundRobinTransport($this->createFromDsns($dsns));
  139.         }
  140.         return $this->fromDsnObject(new Dsn($dsn));
  141.     }
  142.     public function fromDsnObject(Dsn $dsn): TransportInterface
  143.     {
  144.         foreach ($this->factories as $factory) {
  145.             if ($factory->supports($dsn)) {
  146.                 return $factory->create($dsn);
  147.             }
  148.         }
  149.         throw new UnsupportedSchemeException($dsn);
  150.     }
  151.     /**
  152.      * @return TransportInterface[]
  153.      */
  154.     private function createFromDsns(array $dsns): array
  155.     {
  156.         $transports = [];
  157.         foreach ($dsns as $dsn) {
  158.             $transports[] = $this->fromDsnObject(new Dsn($dsn));
  159.         }
  160.         return $transports;
  161.     }
  162.     /**
  163.      * @return TransportFactoryInterface[]
  164.      */
  165.     private static function getDefaultFactories(EventDispatcherInterface $dispatcher nullHttpClientInterface $client null): iterable
  166.     {
  167.         foreach (self::FACTORY_CLASSES as $factoryClass) {
  168.             if (class_exists($factoryClass)) {
  169.                 yield new $factoryClass($dispatcher$client);
  170.             }
  171.         }
  172.         yield new NullTransportFactory($dispatcher$client);
  173.     }
  174. }