Completed
Pull Request — master (#4)
by Andrey
10:46 queued 03:14
created

extractOrderReferenceStatus()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
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;
9
10
use Generated\Shared\Transfer\AddressTransfer;
11
use Generated\Shared\Transfer\AmazonpayResponseTransfer;
12
use PayWithAmazon\ResponseInterface;
13
14
class GetOrderReferenceDetailsConverter extends AbstractResponseParserConverter
15
{
16
17
    const ORDER_REFERENCE_DETAILS = 'OrderReferenceDetails';
18
    const ORDER_REFERENCE_STATUS = 'OrderReferenceStatus';
19
20
    /**
21
     * @return string
22
     */
23
    protected function getResponseType()
24
    {
25
        return 'GetOrderReferenceDetailsResult';
26
    }
27
28
    /**
29
     * @param \PayWithAmazon\ResponseInterface $responseParser
30
     *
31
     * @return array
32
     */
33
    protected function extractOrderReferenceStatus(ResponseInterface $responseParser)
34
    {
35
        return $this->extractResult($responseParser)[self::ORDER_REFERENCE_DETAILS][self::ORDER_REFERENCE_STATUS]['State'];
36
    }
37
38
    /**
39
     * @param \PayWithAmazon\ResponseInterface $responseParser
40
     *
41
     * @return boolean
42
     */
43
    protected function extractIsSandbox(ResponseInterface $responseParser)
44
    {
45
        return ($this->extractResult($responseParser)[self::ORDER_REFERENCE_DETAILS]['ReleaseEnvironment'] === 'Sandbox');
46
    }
47
48
    /**
49
     * @param \PayWithAmazon\ResponseInterface $responseParser
50
     *
51
     * @return \Generated\Shared\Transfer\AddressTransfer
52
     */
53
    protected function extractBillingAddress(ResponseInterface $responseParser)
54
    {
55
        $address = new AddressTransfer();
56
57
        if (!$this->isSuccess($responseParser)) {
58
            return $address;
59
        }
60
61
        $response = $this->extractResult($responseParser);
62
63
        $aResponseAddress =
64
            $response[self::ORDER_REFERENCE_DETAILS]['BillingAddress']['PhysicalAddress'];
65
66
        return $this->convertAddressToTransfer($aResponseAddress);
67
    }
68
69
    /**
70
     * @param \Generated\Shared\Transfer\AmazonpayResponseTransfer $responseTransfer
71
     * @param \PayWithAmazon\ResponseInterface $responseParser
72
     *
73
     * @return \Generated\Shared\Transfer\AmazonpayResponseTransfer
74
     */
75
    protected function setBody(AmazonpayResponseTransfer $responseTransfer, ResponseInterface $responseParser)
76
    {
77
        $responseTransfer->setOrderReferenceStatus(
78
            $this->convertStatusToTransfer(
79
                $this->extractResult($responseParser)[self::ORDER_REFERENCE_DETAILS][self::ORDER_REFERENCE_STATUS]
80
            )
81
        );
82
        $responseTransfer->setIsSandbox($this->extractIsSandbox($responseParser));
83
        $responseTransfer->setShippingAddress($this->extractShippingAddress($responseParser));
84
        $responseTransfer->setBillingAddress($this->extractBillingAddress($responseParser));
85
86
        return parent::setBody($responseTransfer, $responseParser);
87
    }
88
89
}
90