ExtractCSRFParameter::__invoke()   A
last analyzed

Complexity

Conditions 5
Paths 3

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 5

Importance

Changes 0
Metric Value
cc 5
nc 3
nop 1
dl 0
loc 17
ccs 8
cts 8
cp 1
crap 5
rs 9.3888
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace PSR7Csrf\RequestParameter;
6
7
use Psr\Http\Message\ServerRequestInterface;
8
use PSR7Csrf\Exception\InvalidRequestParameterNameException;
9
10
final class ExtractCSRFParameter implements ExtractCSRFParameterInterface
11
{
12
    /**
13
     * @var string
14
     */
15
    private $csrfDataKey;
16
17 12
    public function __construct(string $csrfDataKey)
18
    {
19 12
        if ('' === $csrfDataKey) {
20 1
            throw InvalidRequestParameterNameException::fromEmptyRequestParameterName();
21
        }
22
23 11
        $this->csrfDataKey = $csrfDataKey;
24 11
    }
25
26 11
    public function __invoke(ServerRequestInterface $request) : string
27
    {
28
        /* @var $requestBody array */
29 11
        $requestBody = $request->getParsedBody();
30
31 11
        if (is_object($requestBody) && array_key_exists($this->csrfDataKey, (array) $requestBody)) {
32 4
            $arrayBody = (array) $requestBody;
33
34 4
            return $this->ensureThatTheValueIsAString($arrayBody[$this->csrfDataKey]);
35
        }
36
37 7
        if (is_array($requestBody) && array_key_exists($this->csrfDataKey, $requestBody)) {
38 2
            return $this->ensureThatTheValueIsAString($requestBody[$this->csrfDataKey]);
39
        }
40
41 5
        return '';
42
    }
43
44 6
    private function ensureThatTheValueIsAString($value) : string
45
    {
46 6
        if (! is_string($value)) {
47 3
            return '';
48
        }
49
50 3
        return $value;
51
    }
52
}
53