ProcessorFactory   A
last analyzed

Complexity

Total Complexity 11

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 11
eloc 24
dl 0
loc 27
c 0
b 0
f 0
ccs 0
cts 23
cp 0
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B create() 0 25 11
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
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\AbstractProcessor;
12
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\ContentSecurityPolicyProcessor;
13
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\ExpectCTProcessor;
14
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\NonSecurityHeaderProcessor;
15
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\ReferrerPolicyProcessor;
16
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\ServerProcessor;
17
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\SetCookieProcessor;
18
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\StrictTransportSecurityProcessor;
19
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\XContentTypeOptionsProcessor;
20
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\XFrameOptionsProcessor;
21
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\XPoweredByProcessor;
22
use nicoSWD\SecHeaderCheck\Domain\Result\Processor\XXSSProtectionProcessor;
23
24
final class ProcessorFactory
25
{
26
    public function create(AbstractParsedHeader $parsedHeader, AuditionResult $auditionResult): AbstractProcessor
27
    {
28
        switch ($parsedHeader->name()) {
29
            case SecurityHeader::CONTENT_SECURITY_POLICY:
30
                return new ContentSecurityPolicyProcessor($parsedHeader, $auditionResult);
31
            case SecurityHeader::EXPECT_CT:
32
                return new ExpectCTProcessor($parsedHeader, $auditionResult);
33
            case SecurityHeader::REFERRER_POLICY:
34
                return new ReferrerPolicyProcessor($parsedHeader, $auditionResult);
35
            case SecurityHeader::SET_COOKIE:
36
                return new SetCookieProcessor($parsedHeader, $auditionResult);
37
            case SecurityHeader::SERVER:
38
                return new ServerProcessor($parsedHeader, $auditionResult);
39
            case SecurityHeader::STRICT_TRANSPORT_SECURITY:
40
                return new StrictTransportSecurityProcessor($parsedHeader, $auditionResult);
41
            case SecurityHeader::X_FRAME_OPTIONS:
42
                return new XFrameOptionsProcessor($parsedHeader, $auditionResult);
43
            case SecurityHeader::X_CONTENT_TYPE_OPTIONS:
44
                return new XContentTypeOptionsProcessor($parsedHeader, $auditionResult);
45
            case SecurityHeader::X_POWERED_BY:
46
                return new XPoweredByProcessor($parsedHeader, $auditionResult);
47
            case SecurityHeader::X_XSS_PROTECTION:
48
                return new XXSSProtectionProcessor($parsedHeader, $auditionResult);
49
            default:
50
                return new NonSecurityHeaderProcessor($parsedHeader, $auditionResult);
51
        }
52
    }
53
}
54