• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mallgroup / rabbitmq / 3952140694

pending completion
3952140694

Pull #27

github

GitHub
Merge 966aba8da into 35862d6a1
Pull Request #27: Cleanup dependency

1 of 1 new or added line in 1 file covered. (100.0%)

318 of 645 relevant lines covered (49.3%)

0.49 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

97.78
/src/DI/RabbitMQExtension.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace Mallgroup\RabbitMQ\DI;
6

7
use Mallgroup\RabbitMQ\Client;
8
use Mallgroup\RabbitMQ\Console\Command\ConsumerCommand;
9
use Mallgroup\RabbitMQ\Console\Command\DeclareQueuesAndExchangesCommand;
10
use Mallgroup\RabbitMQ\Console\Command\StaticConsumerCommand;
11
use Mallgroup\RabbitMQ\DI\Helpers\ConnectionsHelper;
12
use Mallgroup\RabbitMQ\DI\Helpers\ConsumersHelper;
13
use Mallgroup\RabbitMQ\DI\Helpers\ExchangesHelper;
14
use Mallgroup\RabbitMQ\DI\Helpers\ProducersHelper;
15
use Mallgroup\RabbitMQ\DI\Helpers\QueuesHelper;
16
use Mallgroup\RabbitMQ\LazyDeclarator;
17
use Nette\DI\Compiler;
18
use Nette\DI\CompilerExtension;
19
use Nette\DI\Definitions\Statement;
20
use Nette\DI\PhpGenerator;
21
use Nette\PhpGenerator\Literal;
22
use Nette\Schema\Expect;
23
use Nette\Schema\Schema;
24

25
/**
26
 * @property-read string $name
27
 * @property-read Compiler $compiler
28
 * @property-read Closure $initialization
29
 */
30
final class RabbitMQExtension extends CompilerExtension
31
{
32
        private ConnectionsHelper $connectionsHelper;
33
        private QueuesHelper $queuesHelper;
34
        private ProducersHelper $producersHelper;
35
        private ExchangesHelper $exchangesHelper;
36
        private ConsumersHelper $consumersHelper;
37

38
        public function __construct()
39
        {
40
                $this->connectionsHelper = new ConnectionsHelper($this);
1✔
41
                $this->queuesHelper = new QueuesHelper($this);
1✔
42
                $this->exchangesHelper = new ExchangesHelper($this);
1✔
43
                $this->producersHelper = new ProducersHelper($this);
1✔
44
                $this->consumersHelper = new ConsumersHelper($this);
1✔
45
        }
1✔
46

47
        public function getConfigSchema(): Schema
48
        {
49
                return Expect::structure([
1✔
50
                        'connections' => $this->connectionsHelper->getConfigSchema(),
1✔
51
                        'queues' => $this->queuesHelper->getConfigSchema(),
1✔
52
                        'consumers' => $this->consumersHelper->getConfigSchema(),
1✔
53
                        'exchanges' => $this->exchangesHelper->getConfigSchema(),
1✔
54
                        'producers' => $this->producersHelper->getConfigSchema(),
1✔
55
                ])->castTo('array');
1✔
56
        }
57

58
        /**
59
         * @throws \InvalidArgumentException
60
         */
61
        public function loadConfiguration(): void
62
        {
63
                $builder = $this->getContainerBuilder();
1✔
64
                $config = $this->getConfig();
1✔
65

66
                $this->processConfig(new PhpGenerator($builder), $config);
1✔
67

68
                $this->connectionsHelper->setup($builder, $config['connections']);
1✔
69
                $this->queuesHelper->setup($builder, $config['queues']);
1✔
70
                $this->exchangesHelper->setup($builder, $config['exchanges']);
1✔
71
                $this->producersHelper->setup($builder, $config['producers']);
1✔
72
                $this->consumersHelper->setup($builder, $config['consumers']);
1✔
73

74
                /**
75
                 * Register Client class
76
                 */
77
                $builder->addDefinition($this->prefix('client'))
1✔
78
                        ->setFactory(Client::class);
1✔
79
                $builder->addDefinition($this->prefix('declarator'))
1✔
80
                        ->setFactory(LazyDeclarator::class);
1✔
81

82
                $this->setupConsoleCommand();
1✔
83
        }
1✔
84

85

86
        public function setupConsoleCommand(): void
87
        {
88
                $builder = $this->getContainerBuilder();
1✔
89

90
                $builder->addDefinition($this->prefix('console.consumerCommand'))
1✔
91
                        ->setFactory(ConsumerCommand::class)
1✔
92
                        ->setTags(['console.command' => 'rabbitmq:consumer']);
1✔
93

94
                $builder->addDefinition($this->prefix('console.staticConsumerCommand'))
1✔
95
                        ->setFactory(StaticConsumerCommand::class)
1✔
96
                        ->setTags(['console.command' => 'rabbitmq:staticConsumer']);
1✔
97

98
                $builder->addDefinition($this->prefix('console.declareQueuesExchangesCommand'))
1✔
99
                        ->setFactory(DeclareQueuesAndExchangesCommand::class)
1✔
100
                        ->setTags(['console.command' => 'rabbitmq:declareQueuesAndExchanges']);
1✔
101
        }
1✔
102

103
        protected function processConfig(PhpGenerator $generator, mixed &$item): void
1✔
104
        {
105
                if (is_array($item)) {
1✔
106
                        foreach ($item as &$value) {
1✔
107
                                $this->processConfig($generator, $value);
1✔
108
                        }
109
                } elseif ($item instanceof Statement) {
1✔
110
                        $item = new Literal($generator->formatStatement($item));
×
111
                }
112
        }
1✔
113
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc