Message::setAnswers()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 3
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 6
ccs 4
cts 4
cp 1
crap 1
rs 10
1
<?php
2
3
/*
4
 * This file is part of PHP DNS Server.
5
 *
6
 * (c) Yif Swery <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace yswery\DNS;
13
14
class Message
15
{
16
    /**
17
     * @var Header
18
     */
19
    private $header;
20
21
    /**
22
     * @var ResourceRecord[]
23
     */
24
    private $questions = [];
25
26
    /**
27
     * @var ResourceRecord[]
28
     */
29
    private $answers = [];
30
31
    /**
32
     * @var ResourceRecord[]
33
     */
34
    private $authoritatives = [];
35
36
    /**
37
     * @var ResourceRecord[]
38
     */
39
    private $additionals = [];
40
41
    /**
42
     * Message constructor.
43
     *
44
     * @param Header|null $header
45
     */
46 7
    public function __construct(Header $header = null)
47
    {
48 7
        if (null === $header) {
49 5
            $header = (new Header())
50 5
                ->setQuestionCount(0)
51 5
                ->setAnswerCount(0)
52 5
                ->setNameServerCount(0)
53 5
                ->setAdditionalRecordsCount(0);
54
        }
55 7
        $this->setHeader($header);
56 7
    }
57
58
    /**
59
     * @return Header
60
     */
61 7
    public function getHeader(): Header
62
    {
63 7
        return $this->header;
64
    }
65
66
    /**
67
     * @param Header $header
68
     *
69
     * @return Message
70
     */
71 7
    public function setHeader(Header $header): Message
72
    {
73 7
        $this->header = $header;
74
75 7
        return $this;
76
    }
77
78
    /**
79
     * @return ResourceRecord[]
80
     */
81 7
    public function getQuestions(): array
82
    {
83 7
        return $this->questions;
84
    }
85
86
    /**
87
     * @param ResourceRecord $resourceRecord
88
     *
89
     * @throws \InvalidArgumentException
90
     *
91
     * @return Message
92
     */
93 6
    public function addQuestion(ResourceRecord $resourceRecord): Message
94
    {
95 6
        if (!$resourceRecord->isQuestion()) {
96
            throw new \InvalidArgumentException('Resource Record provided is not a question.');
97
        }
98
99 6
        $this->questions[] = $resourceRecord;
100 6
        $this->header->setQuestionCount(count($this->questions));
101
102 6
        return $this;
103
    }
104
105
    /**
106
     * @return ResourceRecord[]
107
     */
108 7
    public function getAnswers(): array
109
    {
110 7
        return $this->answers;
111
    }
112
113
    /**
114
     * @param ResourceRecord $resourceRecord
115
     *
116
     * @return Message
117
     */
118
    public function addAnswer(ResourceRecord $resourceRecord): Message
119
    {
120
        $this->answers[] = $resourceRecord;
121
        $this->header->setAnswerCount(count($this->answers));
122
123
        return $this;
124
    }
125
126
    /**
127
     * @return ResourceRecord[]
128
     */
129 7
    public function getAuthoritatives(): array
130
    {
131 7
        return $this->authoritatives;
132
    }
133
134
    /**
135
     * @param ResourceRecord $resourceRecord
136
     *
137
     * @return Message
138
     */
139
    public function addAuthoritative(ResourceRecord $resourceRecord): Message
140
    {
141
        $this->authoritatives[] = $resourceRecord;
142
        $this->header->setNameServerCount(count($this->authoritatives));
143
144
        return $this;
145
    }
146
147
    /**
148
     * @return ResourceRecord[]
149
     */
150 7
    public function getAdditionals(): array
151
    {
152 7
        return $this->additionals;
153
    }
154
155
    /**
156
     * @param ResourceRecord $resourceRecord
157
     *
158
     * @return Message
159
     */
160 3
    public function addAdditional(ResourceRecord $resourceRecord): Message
161
    {
162 3
        $this->additionals[] = $resourceRecord;
163 3
        $this->header->setAdditionalRecordsCount(count($this->additionals));
164
165 3
        return $this;
166
    }
167
168
    /**
169
     * @param array $resourceRecords
170
     *
171
     * @return Message
172
     */
173 7
    public function setQuestions(array $resourceRecords): Message
174
    {
175 7
        $this->questions = [];
176 7
        foreach ($resourceRecords as $resourceRecord) {
177 6
            $this->addQuestion($resourceRecord);
178
        }
179
180 7
        return $this;
181
    }
182
183
    /**
184
     * @param array $resourceRecords
185
     *
186
     * @return Message
187
     */
188 7
    public function setAnswers(array $resourceRecords): Message
189
    {
190 7
        $this->answers = $resourceRecords;
191 7
        $this->header->setAnswerCount(count($this->answers));
192
193 7
        return $this;
194
    }
195
196
    /**
197
     * @param array $resourceRecords
198
     *
199
     * @return Message
200
     */
201 7
    public function setAuthoritatives(array $resourceRecords): Message
202
    {
203 7
        $this->authoritatives = $resourceRecords;
204 7
        $this->header->setNameServerCount(count($this->authoritatives));
205
206 7
        return $this;
207
    }
208
209
    /**
210
     * @param array $resourceRecords
211
     *
212
     * @return Message
213
     */
214 7
    public function setAdditionals(array $resourceRecords): Message
215
    {
216 7
        $this->additionals = $resourceRecords;
217 7
        $this->header->setAdditionalRecordsCount(count($this->additionals));
218
219 7
        return $this;
220
    }
221
}
222