NotifyAction::supports()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 3
cts 3
cp 1
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 1
crap 2
1
<?php
2
3
namespace PayumTW\Ips\Action;
4
5
use Payum\Core\Request\Notify;
6
use Payum\Core\GatewayAwareTrait;
7
use Payum\Core\Reply\HttpResponse;
8
use Payum\Core\GatewayAwareInterface;
9
use Payum\Core\Action\ActionInterface;
10
use Payum\Core\Bridge\Spl\ArrayObject;
11
use Payum\Core\Request\GetHttpRequest;
12
use PayumTW\Ips\Action\Api\BaseApiAwareAction;
13
use Payum\Core\Exception\RequestNotSupportedException;
14
15
class NotifyAction extends BaseApiAwareAction implements ActionInterface, GatewayAwareInterface
16
{
17
    use GatewayAwareTrait;
18
19
    /**
20
     * {@inheritdoc}
21
     *
22
     * @param Notify $request
23
     */
24 2
    public function execute($request)
25
    {
26 2
        RequestNotSupportedException::assertSupports($this, $request);
27 2
        $details = ArrayObject::ensureArrayObject($request->getModel());
28
29 2
        $httpRequest = new GetHttpRequest();
30 2
        $this->gateway->execute($httpRequest);
31
32 2
        $httpRequest->request = $this->api->parseResponse($httpRequest->request);
33
34 2
        if ($this->api->verifyHash($httpRequest->request) === false) {
35 1
            throw new HttpResponse('Signature verify fail.', 400, ['Content-Type' => 'text/plain']);
36
        }
37
38 1
        $details->replace($httpRequest->request);
39
40 1
        throw new HttpResponse('1', 200, ['Content-Type' => 'text/plain']);
41
    }
42
43
    /**
44
     * {@inheritdoc}
45
     */
46 2
    public function supports($request)
47
    {
48
        return
49 2
            $request instanceof Notify &&
50 2
            $request->getModel() instanceof \ArrayAccess;
51
    }
52
}
53