<?php
declare(strict_types=1);
namespace Sentry\Transport;
use Http\Message\MessageFactory as MessageFactoryInterface;
use Psr\Log\LoggerInterface;
use Sentry\HttpClient\HttpClientFactoryInterface;
use Sentry\Options;
/**
* This class is the default implementation of the {@see TransportFactoryInterface}
* interface.
*/
final class DefaultTransportFactory implements TransportFactoryInterface
{
/**
* @var MessageFactoryInterface The PSR-7 message factory
*/
private $messageFactory;
/**
* @var HttpClientFactoryInterface The factory to create the HTTP client
*/
private $httpClientFactory;
/**
* @var LoggerInterface|null A PSR-3 logger
*/
private $logger;
/**
* Constructor.
*
* @param MessageFactoryInterface $messageFactory The PSR-7 message factory
* @param HttpClientFactoryInterface $httpClientFactory The HTTP client factory
* @param LoggerInterface|null $logger A PSR-3 logger
*/
public function __construct(MessageFactoryInterface $messageFactory, HttpClientFactoryInterface $httpClientFactory, ?LoggerInterface $logger = null)
{
$this->messageFactory = $messageFactory;
$this->httpClientFactory = $httpClientFactory;
$this->logger = $logger;
}
/**
* {@inheritdoc}
*/
public function create(Options $options): TransportInterface
{
if (null === $options->getDsn(false)) {
return new NullTransport();
}
return new HttpTransport(
$options,
$this->httpClientFactory->create($options),
$this->messageFactory,
true,
false,
$this->logger
);
}
}