Verifier::verify()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 13
rs 9.8333
c 0
b 0
f 0
cc 2
nc 2
nop 1
1
<?php
2
3
namespace Mdb\PayPal\Ipn;
4
5
class Verifier
6
{
7
    public const STATUS_KEYWORD_VERIFIED = 'VERIFIED';
8
    public const STATUS_KEYWORD_INVALID = 'INVALID';
9
10
    /**
11
     * @var Service
12
     */
13
    private $service;
14
15
    public function __construct(Service $service)
16
    {
17
        $this->service = $service;
18
    }
19
20
    /**
21
     * @throws UnexpectedValueException
22
     */
23
    public function verify(Message $message) : bool
24
    {
25
        $serviceResponse = $this->service->verifyIpnMessage($message);
26
        $serviceResponseBody = $serviceResponse->getBody();
27
28
        $pattern = sprintf('/(%s|%s)/', self::STATUS_KEYWORD_VERIFIED, self::STATUS_KEYWORD_INVALID);
29
30
        if (!preg_match($pattern, $serviceResponseBody)) {
31
            throw new \UnexpectedValueException(sprintf('Unexpected verification status encountered: %s', $serviceResponseBody));
32
        }
33
34
        return $serviceResponseBody === self::STATUS_KEYWORD_VERIFIED;
35
    }
36
}
37