NotifyAction   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 8
dl 0
loc 36
ccs 12
cts 12
cp 1
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A execute() 0 16 2
A supports() 0 6 2
1
<?php
2
3
namespace PayumTW\Allpay\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\Allpay\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
        if ($this->api->verifyHash($httpRequest->request) === false) {
33 1
            throw new HttpResponse('0|CheckMacValue verify fail.', 400, ['Content-Type' => 'text/plain']);
34
        }
35
36 1
        $details->replace($httpRequest->request);
37
38 1
        throw new HttpResponse('1|OK', 200, ['Content-Type' => 'text/plain']);
39
    }
40
41
    /**
42
     * {@inheritdoc}
43
     */
44 2
    public function supports($request)
45
    {
46
        return
47 2
            $request instanceof Notify &&
48 2
            $request->getModel() instanceof \ArrayAccess;
49
    }
50
}
51