Passed
Pull Request — master (#2)
by Mariano
11:07
created

Config::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
namespace Mcustiel\Phiremock\Server\Utils\Config;
4
5
use Mcustiel\Phiremock\Server\Cli\Options\CertificateKeyPath;
6
use Mcustiel\Phiremock\Server\Cli\Options\CertificatePath;
7
use Mcustiel\Phiremock\Server\Cli\Options\ExpectationsDirectory;
8
use Mcustiel\Phiremock\Server\Cli\Options\HostInterface;
9
use Mcustiel\Phiremock\Server\Cli\Options\Passphrase;
10
use Mcustiel\Phiremock\Server\Cli\Options\PhpFactoryFqcn;
11
use Mcustiel\Phiremock\Server\Cli\Options\Port;
12
use Mcustiel\Phiremock\Server\Cli\Options\SecureOptions;
13
14
class Config
15
{
16
    /** @var array */
17
    private $configurationArray;
18
19
    public function __construct(array $configurationArray)
20
    {
21
        $this->configurationArray = $configurationArray;
22
    }
23
24
    public function getInterfaceIp(): HostInterface
25
    {
26
        return new HostInterface($this->configurationArray['ip']);
27
    }
28
29
    public function getPort(): Port
30
    {
31
        return new Port((int) $this->configurationArray['port']);
32
    }
33
34
    public function isDebugMode(): bool
35
    {
36
        return $this->configurationArray['debug'];
37
    }
38
39
    public function getExpectationsPath(): ExpectationsDirectory
40
    {
41
        return new ExpectationsDirectory($this->configurationArray['expectations-dir']);
42
    }
43
44
    public function getFactoryClassName(): PhpFactoryFqcn
45
    {
46
        return new PhpFactoryFqcn($this->configurationArray['factory-class']);
47
    }
48
49
    public function isSecure(): bool
50
    {
51
        return isset($this->configurationArray['certificate'])
52
            && isset($this->configurationArray['certificate-key']);
53
    }
54
55
    public function getSecureOptions(): ?SecureOptions
56
    {
57
        if (!$this->isSecure()) {
58
            return null;
59
        }
60
61
        return new SecureOptions(
62
            new CertificatePath($this->configurationArray['certificate']),
63
            new CertificateKeyPath($this->configurationArray['certificate-key']),
64
            isset($this->configurationArray['cert-passphrase'])
65
                ? new Passphrase($this->configurationArray['cert-passphrase'])
66
                : null
67
        );
68
    }
69
}
70