Your IP : 216.73.216.81


Current Path : /srv/web/sites/trentinoplant.it/httpdocs/vendor1/magento/framework-amqp/Connection/
Upload File :
Current File : /srv/web/sites/trentinoplant.it/httpdocs/vendor1/magento/framework-amqp/Connection/Factory.php

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
declare(strict_types=1);

namespace Magento\Framework\Amqp\Connection;

use Magento\Framework\App\ObjectManager;
use PhpAmqpLib\Connection\AbstractConnection;
use PhpAmqpLib\Connection\AMQPSSLConnection;
use PhpAmqpLib\Connection\AMQPStreamConnection;

/**
 * Create connection based on options.
 */
class Factory
{
    /**
     * Create connection according to given options.
     *
     * @param FactoryOptions $options
     * @return AbstractConnection
     */
    public function create(FactoryOptions $options): AbstractConnection
    {
        $connectionType = $options->isSslEnabled() ? AMQPSSLConnection::class : AMQPStreamConnection::class;
        $parameters = [
            'host' => $options->getHost(),
            'port' => $options->getPort(),
            'user' => $options->getUsername(),
            'password' => $options->getPassword(),
            'vhost' => $options->getVirtualHost() !== null ? $options->getVirtualHost() : '/',
        ];

        if ($options->isSslEnabled()) {
            $parameters['ssl_options'] = $options->getSslOptions() !== null
                ? $options->getSslOptions()
                : ['verify_peer' => true];
            return ObjectManager::getInstance()->create($connectionType, $parameters);
        }
        // need to revert the changes in scope of this ticket - AC-11673
        return new AMQPStreamConnection(
            $parameters['host'],
            $parameters['port'],
            $parameters['user'],
            $parameters['password'],
            $parameters['vhost']
        );
    }
}