MessageProvider::sendBulk()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 2
nc 2
nop 1
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 2
rs 10
c 0
b 0
f 0
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
}