Issues (21)

src/Domain/Header/HeaderScanner.php (1 issue)

Labels
Severity
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\Header;
9
10
use nicoSWD\SecHeaderCheck\Domain\Result\AbstractParsedHeader;
11
use nicoSWD\SecHeaderCheck\Domain\Result\AuditionResult;
12
use nicoSWD\SecHeaderCheck\Domain\Result\ParsedHeaders;
13
use nicoSWD\SecHeaderCheck\Domain\Result\ScanResultProcessor;
14
use nicoSWD\SecHeaderCheck\Domain\Validator\HeaderParserFactory;
15
16
final class HeaderScanner
17
{
18
    /** @var HeaderProviderInterface */
19
    private $headerProvider;
20
    /** @var HeaderParserFactory */
21
    private $parserFactory;
22
    /** @var ScanResultProcessor */
23
    private $scanResultProcessor;
24
25
    public function __construct(
26
        HeaderProviderInterface $headerProvider,
27
        HeaderParserFactory $parserFactory,
28
        ScanResultProcessor $scanResultProcessor
29
    ) {
30
        $this->headerProvider = $headerProvider;
31
        $this->parserFactory = $parserFactory;
32
        $this->scanResultProcessor = $scanResultProcessor;
33
    }
34
35
    public function scanHeaders(string $headers): AuditionResult
36
    {
37
        $headers = $this->getHeaders($headers);
38
        $parsedHeaders = new ParsedHeaders();
39
40
        foreach ($headers as $header) {
41
            $parsedHeaders->add(
42
                $this->parseHeader($header)
0 ignored issues
show
It seems like $header can also be of type boolean; however, parameter $header of nicoSWD\SecHeaderCheck\D...rScanner::parseHeader() does only seem to accept nicoSWD\SecHeaderCheck\Domain\Header\HttpHeader, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

42
                $this->parseHeader(/** @scrutinizer ignore-type */ $header)
Loading history...
43
            );
44
        }
45
46
        return $this->processParsedHeaders($parsedHeaders);
47
    }
48
49
    private function getHeaders(string $headers): HttpHeaderBag
50
    {
51
        return $this->headerProvider->getHeadersFromString($headers);
52
    }
53
54
    private function parseHeader(HttpHeader $header): AbstractParsedHeader
55
    {
56
        return $this->parserFactory->createFromHeader($header)->parse();
57
    }
58
59
    private function processParsedHeaders(ParsedHeaders $scanResult): AuditionResult
60
    {
61
        return $this->scanResultProcessor->processParsedHeaders($scanResult);
62
    }
63
}
64