Completed
Push — master ( 1f684d...57b871 )
by Mike
02:29
created

MessageProvider   A

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\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 1
    public function __construct(AMQPChannel $channel)
26
    {
27 1
        $this->channel = $channel;
28 1
    }
29
30
    /**
31
     * @param \DataProvider\RabbitMqMessageDataProvider $messageDataProvider
32
     */
33 2
    public function sendMessage(RabbitMqMessageDataProvider $messageDataProvider): void
34
    {
35 2
        $this->channel->basic_publish(
36 2
            $this->createMessage($messageDataProvider),
37 2
            $messageDataProvider->getExchange()->getName(),
38 2
            $messageDataProvider->getRoutingKey(),
39 2
            $messageDataProvider->getImmediate(),
40 2
            $messageDataProvider->getMandatory(),
41 2
            $messageDataProvider->getTicket()
42
        );
43 2
    }
44
45
    /**
46
     * @param \DataProvider\RabbitMqMessageCollectionDataProvider $messageCollectionDataProvider
47
     */
48 1
    public function sendBulk(RabbitMqMessageCollectionDataProvider $messageCollectionDataProvider): void
49
    {
50 1
        foreach ($messageCollectionDataProvider->getMessages() as $message) {
51 1
            $this->sendMessage($message);
52
        }
53 1
    }
54
55
    /**
56
     * @param \DataProvider\RabbitMqMessageDataProvider $messageDataDataProvider
57
     *
58
     * @return \PhpAmqpLib\Message\AMQPMessage
59
     */
60 2
    private function createMessage(RabbitMqMessageDataProvider $messageDataDataProvider): AMQPMessage
61
    {
62 2
        return new AMQPMessage(
63 2
            (string)json_encode(
64 2
                $messageDataDataProvider->toArray()
65
            ),
66 2
            $messageDataDataProvider->getProperties()
67
        );
68
    }
69
70
}