Completed
Pull Request — master (#85)
by Romain
06:09
created

Message   A

Complexity

Total Complexity 14

Size/Duplication

Total Lines 151
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 14
dl 0
loc 151
ccs 28
cts 28
cp 1
rs 10
c 0
b 0
f 0

12 Methods

Rating   Name   Duplication   Size   Complexity  
A create() 0 8 1
A getMessageId() 0 3 1
A hasText() 0 3 2
A getAttachments() 0 3 1
A __construct() 0 14 1
A hasEntities() 0 3 1
A getQuickReply() 0 3 1
A getText() 0 3 1
A getEntities() 0 3 1
A getSequence() 0 3 1
A hasQuickReply() 0 3 2
A hasAttachments() 0 3 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Kerox\Messenger\Model\Callback;
6
7
class Message
8
{
9
    /**
10
     * @var string
11
     */
12
    protected $messageId;
13
14
    /**
15
     * @var int
16
     */
17
    protected $sequence;
18
19
    /**
20
     * @var null|string
21
     */
22
    protected $text;
23
24
    /**
25
     * @var null|string
26
     */
27
    protected $quickReply;
28
29
    /**
30
     * @var array
31
     */
32
    protected $attachments;
33
34
    /**
35
     * @var array
36
     */
37
    protected $entities;
38
39
    /**
40
     * Message constructor.
41 9
     *
42
     * @param string $messageId
43
     * @param int    $sequence
44
     * @param string $text
45
     * @param string $quickReply
46
     * @param array  $attachments
47
     * @param array  $entities
48 9
     */
49 9
    public function __construct(
50 9
        string $messageId,
51 9
        int $sequence,
52 9
        ?string $text = null,
53 9
        ?string $quickReply = null,
54
        array $attachments = [],
55
        array $entities = []
56
    ) {
57
        $this->messageId = $messageId;
58 3
        $this->sequence = $sequence;
59
        $this->text = $text;
60 3
        $this->quickReply = $quickReply;
61
        $this->attachments = $attachments;
62
        $this->entities = $entities;
63
    }
64
65
    /**
66 3
     * @return string
67
     */
68 3
    public function getMessageId(): string
69
    {
70
        return $this->messageId;
71
    }
72
73
    /**
74 2
     * @return int
75
     */
76 2
    public function getSequence(): int
77
    {
78
        return $this->sequence;
79
    }
80
81
    /**
82 2
     * @return null|string
83
     */
84 2
    public function getText(): ?string
85
    {
86
        return $this->text;
87
    }
88
89
    /**
90 2
     * @return bool
91
     */
92 2
    public function hasText(): bool
93
    {
94
        return $this->text !== null && $this->text !== '';
95
    }
96
97
    /**
98 2
     * @return null|string
99
     */
100 2
    public function getQuickReply(): ?string
101
    {
102
        return $this->quickReply;
103
    }
104
105
    /**
106 2
     * @return bool
107
     */
108 2
    public function hasQuickReply(): bool
109
    {
110
        return $this->quickReply !== null && $this->quickReply !== '';
111
    }
112
113
    /**
114 2
     * @return array
115
     */
116 2
    public function getAttachments(): array
117
    {
118
        return $this->attachments;
119
    }
120
121
    /**
122
     * @return bool
123
     */
124 6
    public function hasAttachments(): bool
125
    {
126 6
        return !empty($this->attachments);
127 6
    }
128 6
129
    /**
130 6
     * @return array
131
     */
132
    public function getEntities(): array
133
    {
134
        return $this->entities;
135
    }
136
137
    /**
138
     * @return bool
139
     */
140
    public function hasEntities(): bool
141
    {
142
        return !empty($this->entities);
143
    }
144
145
    /**
146
     * @param array $callbackData
147
     *
148
     * @return \Kerox\Messenger\Model\Callback\Message
149
     */
150
    public static function create(array $callbackData)
151
    {
152
        $text = $callbackData['text'] ?? null;
153
        $quickReply = $callbackData['quick_reply']['payload'] ?? null;
154
        $attachments = $callbackData['attachments'] ?? [];
155
        $entities = $callbackData['nlp']['entities'] ?? [];
156
157
        return new self($callbackData['mid'], $callbackData['seq'], $text, $quickReply, $attachments, $entities);
158
    }
159
}
160