MessageProvider   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
eloc 16
dl 0
loc 54
ccs 21
cts 21
cp 1
rs 10
c 0
b 0
f 0
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A sendBulk() 0 4 2
A createMessage() 0 7 1
A sendMessage() 0 9 1
A __construct() 0 3 1
1
<?php
2
3
4
namespace Xervice\RabbitMQ\Business\Model\Message;
5
6
7
use DataProvider\RabbitMqMessageCollectionDataProvider;
8
use DataProvider\RabbitMqMessageDataProvider;
9
use PhpAmqpLib\Channel\AMQPChannel;
10
use PhpAmqpLib\Message\AMQPMessage;
11
12
class MessageProvider implements MessageProviderInterface
13
{
14
    /**
15
     * @var \PhpAmqpLib\Channel\AMQPChannel
16
     */
17
    private $channel;
18
19
    /**
20
     * MessageProvider constructor.
21
     *
22
     * @param \PhpAmqpLib\Channel\AMQPChannel $channel
23
     */
24 1
    public function __construct(AMQPChannel $channel)
25
    {
26 1
        $this->channel = $channel;
27 1
    }
28
29
    /**
30
     * @param \DataProvider\RabbitMqMessageDataProvider $messageDataProvider
31
     */
32 2
    public function sendMessage(RabbitMqMessageDataProvider $messageDataProvider): void
33
    {
34 2
        $this->channel->basic_publish(
35 2
            $this->createMessage($messageDataProvider),
36 2
            $messageDataProvider->getExchange()->getName(),
37 2
            $messageDataProvider->getRoutingKey(),
38 2
            $messageDataProvider->getImmediate(),
39 2
            $messageDataProvider->getMandatory(),
40 2
            $messageDataProvider->getTicket()
41
        );
42 2
    }
43
44
    /**
45
     * @param \DataProvider\RabbitMqMessageCollectionDataProvider $messageCollectionDataProvider
46
     */
47 1
    public function sendBulk(RabbitMqMessageCollectionDataProvider $messageCollectionDataProvider): void
48
    {
49 1
        foreach ($messageCollectionDataProvider->getMessages() as $message) {
50 1
            $this->sendMessage($message);
51
        }
52 1
    }
53
54
    /**
55
     * @param \DataProvider\RabbitMqMessageDataProvider $messageDataDataProvider
56
     *
57
     * @return \PhpAmqpLib\Message\AMQPMessage
58
     */
59 2
    private function createMessage(RabbitMqMessageDataProvider $messageDataDataProvider): AMQPMessage
60
    {
61 2
        return new AMQPMessage(
62 2
            (string)json_encode(
63 2
                $messageDataDataProvider->toArray()
64
            ),
65 2
            $messageDataDataProvider->getProperties()
66
        );
67
    }
68
69
}