Passed
Push — master ( cc27ee...790b93 )
by Thomas Mauro
02:24
created

FailedMessagesRetryCommandFactory   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 31
Duplicated Lines 0 %

Test Coverage

Coverage 93.75%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 17
c 1
b 0
f 0
dl 0
loc 31
ccs 15
cts 16
cp 0.9375
rs 10
wmc 5

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 29 5
1
<?php
2
3
declare(strict_types=1);
4
5
namespace TMV\Messenger\Factory\Command;
6
7
use Psr\Container\ContainerInterface;
8
use Symfony\Component\Messenger\Command\FailedMessagesRetryCommand;
9
use Symfony\Component\Messenger\MessageBusInterface;
10
use TMV\Messenger\Exception\InvalidArgumentException;
11
12
final class FailedMessagesRetryCommandFactory
13
{
14 3
    public function __invoke(ContainerInterface $container): FailedMessagesRetryCommand
15
    {
16 3
        $config = $container->has('config') ? $container->get('config') : [];
17
        /** @var string|null $failureTransportName */
18 3
        $failureTransportName = $config['messenger']['failure_transport'] ?? null;
19
20 3
        if (null === $failureTransportName) {
21 1
            throw new InvalidArgumentException('Invalid failure_transport name');
22
        }
23
24 2
        $eventDispatcher = $config['messenger']['event_dispatcher'] ?? 'messenger.event_dispatcher';
25
26 2
        if (null === $eventDispatcher) {
27
            throw new InvalidArgumentException('Invalid event_dispatcher service');
28
        }
29
30
        /** @var ContainerInterface $receiverLocator */
31 2
        $receiverLocator = $container->get('messenger.receivers_locator');
32
        /** @var MessageBusInterface $messageBus */
33 2
        $messageBus = $container->get('messenger.routable_message_bus');
34
        /** @var string|null $logger */
35 2
        $logger = $config['messenger']['logger'] ?? null;
36
37 2
        return new FailedMessagesRetryCommand(
38 2
            $failureTransportName,
39 2
            $receiverLocator->get($failureTransportName),
40
            $messageBus,
41 2
            $container->get($eventDispatcher),
42 2
            $logger ? $container->get($logger) : null
43
        );
44
    }
45
}
46