Passed
Push — master ( b520c6...4ddac5 )
by Mike
03:27
created

MessageProvider   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 15
dl 0
loc 52
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A sendBulk() 0 4 2
A sendMessage() 0 9 1
A createMessage() 0 5 1
A __construct() 0 3 1
1
<?php
2
3
4
namespace Xervice\RabbitMQ\Message;
5
6
7
use DataProvider\RabbitMqMessageCollectionDataProvider;
8
use DataProvider\RabbitMqMessageDataDataProvider;
0 ignored issues
show
Bug introduced by
The type DataProvider\RabbitMqMessageDataDataProvider was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
9
use DataProvider\RabbitMqMessageDataProvider;
10
use PhpAmqpLib\Channel\AMQPChannel;
11
use PhpAmqpLib\Message\AMQPMessage;
12
13
class MessageProvider implements MessageProviderInterface
14
{
15
    /**
16
     * @var \PhpAmqpLib\Channel\AMQPChannel
17
     */
18
    private $channel;
19
20
    /**
21
     * MessageProvider constructor.
22
     *
23
     * @param \PhpAmqpLib\Channel\AMQPChannel $channel
24
     */
25
    public function __construct(AMQPChannel $channel)
26
    {
27
        $this->channel = $channel;
28
    }
29
30
    /**
31
     * @param \DataProvider\RabbitMqMessageDataProvider $messageDataProvider
32
     */
33
    public function sendMessage(RabbitMqMessageDataProvider $messageDataProvider): void
34
    {
35
        $this->channel->basic_publish(
36
            $this->createMessage($messageDataProvider),
37
            $messageDataProvider->getExchange()->getName(),
38
            $messageDataProvider->getRoutingKey(),
39
            $messageDataProvider->getImmediate(),
40
            $messageDataProvider->getMandatory(),
41
            $messageDataProvider->getTicket()
42
        );
43
    }
44
45
    /**
46
     * @param \DataProvider\RabbitMqMessageCollectionDataProvider $messageCollectionDataProvider
47
     */
48
    public function sendBulk(RabbitMqMessageCollectionDataProvider $messageCollectionDataProvider): void
49
    {
50
        foreach ($messageCollectionDataProvider->getMessages() as $message) {
51
            $this->sendMessage($message);
52
        }
53
    }
54
55
    /**
56
     * @param \DataProvider\RabbitMqMessageDataProvider $messageDataProvider
57
     *
58
     * @return \PhpAmqpLib\Message\AMQPMessage
59
     */
60
    private function createMessage(RabbitMqMessageDataProvider $messageDataDataProvider)
61
    {
62
        return new AMQPMessage(
63
            $messageDataDataProvider->getMessage(),
64
            $messageDataDataProvider->getProperties()
65
        );
66
    }
67
68
}