Completed
Pull Request — master (#26)
by
unknown
01:46
created

Factory::Rrsig()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 12
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 17
ccs 12
cts 12
cp 1
rs 9.7
c 0
b 0
f 0
cc 1
nc 1
nop 9
crap 1

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

1
<?php
2
3
/*
4
 * This file is part of Badcow DNS Library.
5
 *
6
 * (c) Samuel Williams <[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 Badcow\DNS\Rdata;
13
14
use Badcow\DNS\Rdata\DNSSEC\DNSKEY;
15
use Badcow\DNS\Rdata\DNSSEC\DS;
16
use Badcow\DNS\Rdata\DNSSEC\NSEC;
17
use Badcow\DNS\Rdata\DNSSEC\RRSIG;
18
19
class Factory
20
{
21
    /**
22
     * Creates a new RData object from a name.
23
     *
24
     * @param string $name
25
     *
26
     * @throws UnsupportedTypeException
27
     *
28
     * @return RdataInterface
29
     */
30 1
    public static function newRdataFromName(string $name): RdataInterface
31
    {
32 1
        if (!self::isTypeImplemented($name)) {
33 1
            throw new UnsupportedTypeException($name);
34
        }
35
36 1
        $namespace = '\\Badcow\\DNS\\Rdata\\';
37 1
        $className = $namespace.strtoupper($name);
38
39 1
        if (!class_exists($className)) {
40 1
            $className = $namespace.'DNSSEC\\'.strtoupper($name);
41
        }
42
43 1
        return new $className();
44
    }
45
46
    /**
47
     * @param string $name
48
     *
49
     * @return bool
50
     */
51 1
    public static function isTypeImplemented(string $name): bool
52
    {
53 1
        $namespace = '\\Badcow\\DNS\\Rdata\\';
54 1
        $name = strtoupper($name);
55
56 1
        return class_exists($namespace.$name) || class_exists($namespace.'DNSSEC\\'.$name);
57
    }
58
59
    /**
60
     * Create a new AAAA R-Data object.
61
     *
62
     * @param string $address
63
     *
64
     * @return AAAA
65
     */
66 9
    public static function Aaaa($address)
67
    {
68 9
        $rdata = new AAAA();
69 9
        $rdata->setAddress($address);
70
71 9
        return $rdata;
72
    }
73
74
    /**
75
     * Create a new A R-Data object.
76
     *
77
     * @param string $address
78
     *
79
     * @return A
80
     */
81 10
    public static function A($address)
82
    {
83 10
        $rdata = new A();
84 10
        $rdata->setAddress($address);
85
86 10
        return $rdata;
87
    }
88
89
    /**
90
     * Create a new CNAME object.
91
     *
92
     * @param string $cname
93
     *
94
     * @return CNAME
95
     */
96 8
    public static function Cname($cname)
97
    {
98 8
        $rdata = new CNAME();
99 8
        $rdata->setTarget($cname);
100
101 8
        return $rdata;
102
    }
103
104
    /**
105
     * @param string $cpu
106
     * @param string $os
107
     *
108
     * @return HINFO
109
     */
110 7
    public static function Hinfo($cpu, $os)
111
    {
112 7
        $rdata = new HINFO();
113 7
        $rdata->setCpu($cpu);
114 7
        $rdata->setOs($os);
115
116 7
        return $rdata;
117
    }
118
119
    /**
120
     * @param int    $preference
121
     * @param string $exchange
122
     *
123
     * @return MX
124
     */
125 9
    public static function Mx($preference, $exchange)
126
    {
127 9
        $rdata = new MX();
128 9
        $rdata->setPreference($preference);
129 9
        $rdata->setExchange($exchange);
130
131 9
        return $rdata;
132
    }
133
134
    /**
135
     * @param string $mname
136
     * @param string $rname
137
     * @param int    $serial
138
     * @param int    $refresh
139
     * @param int    $retry
140
     * @param int    $expire
141
     * @param int    $minimum
142
     *
143
     * @return SOA
144
     */
145 12
    public static function Soa($mname, $rname, $serial, $refresh, $retry, $expire, $minimum)
146
    {
147 12
        $rdata = new SOA();
148 12
        $rdata->setMname($mname);
149 12
        $rdata->setRname($rname);
150 12
        $rdata->setSerial($serial);
151 12
        $rdata->setRefresh($refresh);
152 12
        $rdata->setRetry($retry);
153 12
        $rdata->setExpire($expire);
154 12
        $rdata->setMinimum($minimum);
155
156 12
        return $rdata;
157
    }
158
159
    /**
160
     * @param string $nsdname
161
     *
162
     * @return NS
163
     */
164 11
    public static function Ns($nsdname)
165
    {
166 11
        $rdata = new NS();
167 11
        $rdata->setTarget($nsdname);
168
169 11
        return $rdata;
170
    }
171
172
    /**
173
     * @param string $text
174
     *
175
     * @return TXT
176
     */
177 8
    public static function txt($text)
178
    {
179 8
        $rdata = new TXT();
180 8
        $rdata->setText($text);
181
182 8
        return $rdata;
183
    }
184
185
    /**
186
     * @param string $target
187
     *
188
     * @return DNAME
189
     */
190 7
    public static function Dname($target)
191
    {
192 7
        $rdata = new DNAME();
193 7
        $rdata->setTarget($target);
194
195 7
        return $rdata;
196
    }
197
198
    /**
199
     * @param $lat
200
     * @param $lon
201
     * @param float $alt
202
     * @param float $size
203
     * @param float $hp
204
     * @param float $vp
205
     *
206
     * @return LOC
207
     */
208 8
    public static function Loc($lat, $lon, $alt = 0.0, $size = 1.0, $hp = 10000.0, $vp = 10.0)
209
    {
210 8
        $rdata = new LOC();
211 8
        $rdata->setLatitude($lat);
212 8
        $rdata->setLongitude($lon);
213 8
        $rdata->setAltitude($alt);
214 8
        $rdata->setSize($size);
215 8
        $rdata->setHorizontalPrecision($hp);
216 8
        $rdata->setVerticalPrecision($vp);
217
218 8
        return $rdata;
219
    }
220
221
    /**
222
     * @param string $target
223
     *
224
     * @return PTR
225
     */
226 2
    public static function Ptr($target)
227
    {
228 2
        $rdata = new PTR();
229 2
        $rdata->setTarget($target);
230
231 2
        return $rdata;
232
    }
233
234
    /**
235
     * @param int    $flags
236
     * @param int    $algorithm
237
     * @param string $publicKey
238
     *
239
     * @return DNSKEY
240
     */
241 1
    public static function Dnskey($flags, $algorithm, $publicKey)
242
    {
243 1
        $rdata = new DNSKEY();
244 1
        $rdata->setFlags($flags);
245 1
        $rdata->setAlgorithm($algorithm);
246 1
        $rdata->setPublicKey($publicKey);
247
248 1
        return $rdata;
249
    }
250
251
    /**
252
     * @param int    $keyTag
253
     * @param int    $algorithm
254
     * @param string $digest
255
     * @param int    $digestType
256
     *
257
     * @return DS
258
     */
259 1
    public static function Ds(int $keyTag, int $algorithm, string $digest, int $digestType = DS::DIGEST_SHA1)
260
    {
261 1
        $rdata = new DS();
262 1
        $rdata->setKeyTag($keyTag);
263 1
        $rdata->setAlgorithm($algorithm);
264 1
        $rdata->setDigest($digest);
265 1
        $rdata->setDigestType($digestType);
266
267 1
        return $rdata;
268
    }
269
270
    /**
271
     * @param string $nextDomainName
272
     * @param array  $typeBitMaps
273
     *
274
     * @return NSEC
275
     */
276 1
    public static function Nsec(string $nextDomainName, array $typeBitMaps)
277
    {
278 1
        $rdata = new NSEC();
279 1
        $rdata->setNextDomainName($nextDomainName);
280 1
        array_map([$rdata, 'addTypeBitMap'], $typeBitMaps);
281
282 1
        return $rdata;
283
    }
284
285
    /**
286
     * @param $typeCovered
287
     * @param $algorithm
288
     * @param $labels
289
     * @param $originalTtl
290
     * @param $signatureExpiration
291
     * @param $signatureInception
292
     * @param $keyTag
293
     * @param $signersName
294
     * @param $signature
295
     *
296
     * @return RRSIG
297
     */
298 1
    public static function Rrsig($typeCovered, $algorithm, $labels, $originalTtl,
299
                          $signatureExpiration, $signatureInception, $keyTag,
300
                          $signersName, $signature)
301
    {
302 1
        $rdata = new RRSIG();
303 1
        $rdata->setTypeCovered($typeCovered);
304 1
        $rdata->setAlgorithm($algorithm);
305 1
        $rdata->setLabels($labels);
306 1
        $rdata->setOriginalTtl($originalTtl);
307 1
        $rdata->setSignatureExpiration($signatureExpiration);
308 1
        $rdata->setSignatureInception($signatureInception);
309 1
        $rdata->setKeyTag($keyTag);
310 1
        $rdata->setSignersName($signersName);
311 1
        $rdata->setSignature($signature);
312
313 1
        return $rdata;
314
    }
315
316
    /**
317
     * @param int    $priority
318
     * @param int    $weight
319
     * @param int    $port
320
     * @param string $target
321
     *
322
     * @return SRV
323
     */
324 1
    public static function Srv(int $priority, int $weight, int $port, string $target)
325
    {
326 1
        $rdata = new SRV();
327 1
        $rdata->setPriority($priority);
328 1
        $rdata->setWeight($weight);
329 1
        $rdata->setPort($port);
330 1
        $rdata->setTarget($target);
331
332 1
        return $rdata;
333
    }
334
335
    /**
336
     * @param \IPBlock[] $includedRanges
337
     * @param \IPBlock[] $excludedRanges
338
     *
339
     * @return APL
340
     */
341 2
    public static function Apl(array $includedRanges = [], array $excludedRanges = []): APL
342
    {
343 2
        $rdata = new APL();
344
345 2
        foreach ($includedRanges as $ipBlock) {
346 2
            $rdata->addAddressRange($ipBlock, true);
347
        }
348
349 2
        foreach ($excludedRanges as $ipBlock) {
350 2
            $rdata->addAddressRange($ipBlock, false);
351
        }
352
353 2
        return $rdata;
354
    }
355
356
    /**
357
     * @param integer $flag
358
     * @param string  $tag
359
     * @param string  $target
360
     *
361
     * @return CAA
362
     */
363 1
    public static function Caa($flag, $tag, $target)
364
    {
365 1
        $rdata = new CAA();
366 1
        $rdata->setFlag($flag);
367 1
        $rdata->setTag($tag);
368 1
        $rdata->setTarget($target);
369
370 1
        return $rdata;
371
    }
372
}
373