AuditionResult::getMissingHeaders()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 16
c 0
b 0
f 0
ccs 0
cts 6
cp 0
rs 9.9666
cc 2
nc 2
nop 0
crap 6
1
<?php declare(strict_types=1);
2
3
/**
4
 * @license  http://opensource.org/licenses/mit-license.php MIT
5
 * @link     https://github.com/nicoSWD
6
 * @author   Nicolas Oelgart <[email protected]>
7
 */
8
namespace nicoSWD\SecHeaderCheck\Domain\Result;
9
10
use nicoSWD\SecHeaderCheck\Domain\Header\SecurityHeader;
11
12
class AuditionResult
13
{
14
    /** @var HeaderWithObservations[] */
15
    private $observations = [];
16
    /** @var SecurityHeader */
17
    private $securityHeader;
18
19
    public function __construct(SecurityHeader $securityHeader)
20
    {
21
        $this->securityHeader = $securityHeader;
22
    }
23
24
    /** @return HeaderWithObservations[] */
25
    public function getObservations()
26
    {
27
        return $this->observations;
28
    }
29
30
    public function addObservations(HeaderWithObservations $observations)
31
    {
32
        $this->observations[] = $observations;
33
    }
34
35
    public function getMissingHeaders(): array
36
    {
37
        $foundHeaders = [];
38
39
        foreach ($this->getObservations() as $observation) {
40
            $foundHeaders[] = $observation->getHeaderName();
41
        }
42
43
        $excludeFromSuggestions = [
44
            SecurityHeader::EXPECT_CT,
45
            SecurityHeader::SERVER,
46
            SecurityHeader::SET_COOKIE,
47
            SecurityHeader::X_POWERED_BY,
48
        ];
49
50
        return array_diff($this->securityHeader->all(), $foundHeaders, $excludeFromSuggestions);
51
    }
52
53
    public function getScore(): int
54
    {
55
        return 9;
56
    }
57
}
58