MessageMapper::toMessage()   B
last analyzed

Complexity

Conditions 3
Paths 1

Size

Total Lines 27
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 23
CRAP Score 3

Importance

Changes 2
Bugs 1 Features 0
Metric Value
c 2
b 1
f 0
dl 0
loc 27
ccs 23
cts 23
cp 1
rs 8.8571
cc 3
eloc 23
nc 1
nop 1
crap 3
1
<?php
2
3
namespace AMQPAL\Adapter\AMQP;
4
5
use AMQPEnvelope;
6
use AMQPAL\Adapter\Message;
7
use DateTime;
8
9
class MessageMapper
10
{
11
    /**
12
     * @var Message
13
     */
14
    protected $messagePrototype;
15
16
    /**
17
     * @return Message
18
     */
19 7
    public function getMessagePrototype()
20
    {
21 7
        if (!$this->messagePrototype) {
22 6
            $this->messagePrototype = new Message();
23
        }
24 7
        return $this->messagePrototype;
25
    }
26
27
    /**
28
     * @param Message $messagePrototype
29
     * @return $this
30
     */
31 2
    public function setMessagePrototype(Message $messagePrototype)
32
    {
33 2
        $this->messagePrototype = $messagePrototype;
34 2
        return $this;
35
    }
36
37
    /**
38
     * @param AMQPEnvelope $libMessage
39
     * @return Message
40
     */
41 6
    public function toMessage(AMQPEnvelope $libMessage)
42
    {
43 6
        $message = clone $this->getMessagePrototype();
44 6
        $message->setBody($libMessage->getBody());
45 6
        $message->setRoutingKey($libMessage->getRoutingKey());
46 6
        $message->setDeliveryTag($libMessage->getDeliveryTag());
47 6
        $message->setDeliveryMode($libMessage->getDeliveryMode());
48 6
        $message->setExchangeName($libMessage->getExchangeName());
49 6
        $message->setRedelivered($libMessage->isRedelivery());
50 6
        $message->setContentType($libMessage->getContentType());
51 6
        $message->setContentEncoding($libMessage->getContentEncoding());
52 6
        $message->setType($libMessage->getType());
53 6
        $message->setDateTime(
54 6
            (int)$libMessage->getTimestamp() ? (new \DateTime())->setTimestamp($libMessage->getTimestamp()) : null
55
        );
56 6
        $message->setPriority($libMessage->getPriority());
57 6
        $expiration = $libMessage->getExpiration();
58 6
        $message->setExpiration(!empty($expiration) ? new \DateTime($libMessage->getExpiration()) : null);
59 6
        $message->setUserId($libMessage->getUserId());
60 6
        $message->setAppId($libMessage->getAppId());
61 6
        $message->setMessageId($libMessage->getMessageId());
62 6
        $message->setReplyTo($libMessage->getReplyTo());
63 6
        $message->setCorrelationId($libMessage->getCorrelationId());
64 6
        $message->setHeaders($libMessage->getHeaders());
65
66 6
        return $message;
67
    }
68
}
69