ScanURLUseCase   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 2
eloc 14
dl 0
loc 27
c 0
b 0
f 0
ccs 0
cts 14
cp 0
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A execute() 0 14 1
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\Application\UseCase\ScanHeaders;
9
10
use nicoSWD\SecHeaderCheck\Domain\Header\URLScanner;
11
use nicoSWD\SecHeaderCheck\Domain\ResultPrinter\OutputOptions;
12
use nicoSWD\SecHeaderCheck\Domain\ResultPrinter\ResultPrinterFactory;
13
14
final class ScanURLUseCase
15
{
16
    /** @var URLScanner */
17
    private $securityScanner;
18
    /** @var ResultPrinterFactory */
19
    private $resultPrinterFactory;
20
21
    public function __construct(URLScanner $securityScanner, ResultPrinterFactory $resultPrinterFactory)
22
    {
23
        $this->securityScanner = $securityScanner;
24
        $this->resultPrinterFactory = $resultPrinterFactory;
25
    }
26
27
    public function execute(ScanURLRequest $request): ScanURLResponse
28
    {
29
        $outputOptions = new OutputOptions();
30
        $outputOptions->setShowAllHeaders($request->showAllHeaders);
31
32
        $scanResults = $this->securityScanner->scanURL($request->url, $request->followRedirects);
33
        $outputPrinter = $this->resultPrinterFactory->createFromFormat($request->outputFormat, $outputOptions);
34
35
        $result = new ScanURLResponse();
36
        $result->output = $outputPrinter->getOutput($scanResults);
37
        $result->score = $scanResults->getScore();
38
        $result->hitTargetScore = $scanResults->getScore() >= $request->targetScore;
39
40
        return $result;
41
    }
42
}
43