DnsRecordsFactory::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 4
cts 4
cp 1
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 3
crap 1
1
<?php
2
declare(strict_types = 1);
3
/**
4
 *
5
 * Copyright (C) 2018  Ross Mitchell
6
 *
7
 * This file is part of RossMitchell/UpdateCloudFlare.
8
 *
9
 * RossMitchell/UpdateCloudFlare is free software: you can redistribute
10
 * it and/or modify it under the terms of the GNU General Public License
11
 * as published by the Free Software Foundation, either version 3 of the
12
 * License, or (at your option) any later version.
13
 *
14
 * This program is distributed in the hope that it will be useful,
15
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
 * GNU General Public License for more details.
18
 *
19
 * You should have received a copy of the GNU General Public License
20
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21
 */
22
23
namespace RossMitchell\UpdateCloudFlare\Factories\Requests;
24
25
use RossMitchell\UpdateCloudFlare\Factories\Data\SubDomainInfoFactory;
26
use RossMitchell\UpdateCloudFlare\Interfaces\ConfigInterface;
27
use RossMitchell\UpdateCloudFlare\Interfaces\HeadersInterface;
28
use RossMitchell\UpdateCloudFlare\Requests\DnsRecords;
29
use Symfony\Component\Console\Exception\LogicException;
30
31
/**
32
 * Class DnsRecordsFactory
33
 * @package RossMitchell\UpdateCloudFlare\Factories\Requests
34
 */
35
class DnsRecordsFactory
36
{
37
    /**
38
     * @var SubDomainInfoFactory
39
     */
40
    private $subDomainInfoFactory;
41
    /**
42
     * @var ConfigInterface
43
     */
44
    private $config;
45
    /**
46
     * @var HeadersInterface
47
     */
48
    private $headers;
49
50
    /**
51
     * DnsRecordsFactory constructor.
52
     *
53
     * @param SubDomainInfoFactory $subDomainInfoFactory
54
     * @param ConfigInterface      $config
55
     * @param HeadersInterface     $headers
56
     */
57 12
    public function __construct(
58
        SubDomainInfoFactory $subDomainInfoFactory,
59
        ConfigInterface $config,
60
        HeadersInterface $headers
61
    ) {
62 12
        $this->subDomainInfoFactory = $subDomainInfoFactory;
63 12
        $this->config               = $config;
64 12
        $this->headers              = $headers;
65 12
    }
66
67
    /**
68
     * @param string $subDomain
69
     * @param string $type
70
     * @param string $zoneId
71
     *
72
     * @return DnsRecords
73
     * @throws LogicException
74
     */
75 10
    public function create(string $subDomain, string $type, string $zoneId): DnsRecords
76
    {
77 10
        $subDomainInfo = $this->subDomainInfoFactory->get($subDomain, $type);
78 10
        $subDomainInfo->setZoneId($zoneId);
79
80 10
        return new DnsRecords($this->config, $this->headers, $subDomainInfo);
81
    }
82
}
83