Passed
Branch feature/ECO-965-refactoring (c9cdee)
by Andrey
06:34 queued 01:51
created

IpnConverterFactory   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 97
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 97
rs 10
c 0
b 0
f 0
wmc 9

9 Methods

Rating   Name   Duplication   Size   Complexity  
A createRefundDetailsConverter() 0 3 1
A createIpnPaymentRefundRequestConverter() 0 4 1
A getIpnRequestConverter() 0 5 1
A getTypeToConverterMap() 0 14 1
A createIpnPaymentAuthorizeRequestConverter() 0 4 1
A createCaptureDetailsConverter() 0 3 1
A createIpnPaymentCaptureRequestConverter() 0 4 1
A createAuthorizationDetailsConverter() 0 3 1
A createIpnOrderReferenceNotificationConverter() 0 3 1
1
<?php
2
3
/**
4
 * Apache OSL-2
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Zed\AmazonPay\Business\Api\Converter\Ipn;
9
10
use SprykerEco\Shared\AmazonPay\AmazonPayConfig;
11
use SprykerEco\Zed\AmazonPay\Business\Api\Converter\Details\AuthorizationDetailsConverter;
12
use SprykerEco\Zed\AmazonPay\Business\Api\Converter\Details\CaptureDetailsConverter;
13
use SprykerEco\Zed\AmazonPay\Business\Api\Converter\Details\RefundDetailsConverter;
14
15
class IpnConverterFactory implements IpnConverterFactoryInterface
16
{
17
    const NOTIFICATION_TYPE = 'NotificationType';
18
19
    /**
20
     * @return array
21
     */
22
    protected function getTypeToConverterMap()
23
    {
24
        return [
25
            AmazonPayConfig::IPN_REQUEST_TYPE_PAYMENT_AUTHORIZE => function () {
26
                return $this->createIpnPaymentAuthorizeRequestConverter();
27
            },
28
            AmazonPayConfig::IPN_REQUEST_TYPE_PAYMENT_CAPTURE => function () {
29
                return $this->createIpnPaymentCaptureRequestConverter();
30
            },
31
            AmazonPayConfig::IPN_REQUEST_TYPE_PAYMENT_REFUND => function () {
32
                return $this->createIpnPaymentRefundRequestConverter();
33
            },
34
            AmazonPayConfig::IPN_REQUEST_TYPE_ORDER_REFERENCE_NOTIFICATION => function () {
35
                return $this->createIpnOrderReferenceNotificationConverter();
36
            },
37
        ];
38
    }
39
40
    /**
41
     * @param array $request
42
     *
43
     * @return \SprykerEco\Zed\AmazonPay\Business\Api\Converter\Ipn\IpnConverterInterface
44
     */
45
    public function getIpnRequestConverter(array $request)
46
    {
47
        $map = $this->getTypeToConverterMap();
48
49
        return $map[$request[static::NOTIFICATION_TYPE]]();
50
    }
51
52
    /**
53
     * @return \SprykerEco\Zed\AmazonPay\Business\Api\Converter\Ipn\IpnConverterInterface
54
     */
55
    protected function createIpnOrderReferenceNotificationConverter()
56
    {
57
        return new IpnOrderReferenceNotificationConverter();
58
    }
59
60
    /**
61
     * @return \SprykerEco\Zed\AmazonPay\Business\Api\Converter\Ipn\IpnConverterInterface
62
     */
63
    protected function createIpnPaymentAuthorizeRequestConverter()
64
    {
65
        return new IpnPaymentAuthorizeRequestConverter(
66
            $this->createAuthorizationDetailsConverter()
67
        );
68
    }
69
70
    /**
71
     * @return \SprykerEco\Zed\AmazonPay\Business\Api\Converter\Ipn\IpnConverterInterface
72
     */
73
    protected function createIpnPaymentCaptureRequestConverter()
74
    {
75
        return new IpnPaymentCaptureRequestConverter(
76
            $this->createCaptureDetailsConverter()
77
        );
78
    }
79
80
    /**
81
     * @return \SprykerEco\Zed\AmazonPay\Business\Api\Converter\Ipn\IpnConverterInterface
82
     */
83
    protected function createIpnPaymentRefundRequestConverter()
84
    {
85
        return new IpnPaymentRefundRequestConverter(
86
            $this->createRefundDetailsConverter()
87
        );
88
    }
89
90
    /**
91
     * @return \SprykerEco\Zed\AmazonPay\Business\Api\Converter\ArrayConverterInterface
92
     */
93
    protected function createAuthorizationDetailsConverter()
94
    {
95
        return new AuthorizationDetailsConverter();
96
    }
97
98
    /**
99
     * @return \SprykerEco\Zed\AmazonPay\Business\Api\Converter\ArrayConverterInterface
100
     */
101
    protected function createCaptureDetailsConverter()
102
    {
103
        return new CaptureDetailsConverter();
104
    }
105
106
    /**
107
     * @return \SprykerEco\Zed\AmazonPay\Business\Api\Converter\ArrayConverterInterface
108
     */
109
    protected function createRefundDetailsConverter()
110
    {
111
        return new RefundDetailsConverter();
112
    }
113
}
114