MWSOrders   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 87
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
wmc 14
lcom 1
cbo 1
dl 0
loc 87
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A list() 0 13 2
A get() 0 14 3
A getItems() 0 9 1
B parseResponse() 0 36 7
1
<?php
2
3
namespace Looxis\LaravelAmazonMWS;
4
5
class MWSOrders
6
{
7
    const VERSION = '2013-09-01';
8
9
    protected $client;
10
11
    public function __construct(MWSClient $client)
12
    {
13
        $this->client = $client;
14
    }
15
16
    public function list($params = [])
17
    {
18
        $nextToken = data_get($params, 'NextToken');
19
        $action = 'ListOrders';
20
21
        if ($nextToken) {
22
            $action = 'ListOrdersByNextToken';
23
        }
24
25
        $response = $this->client->post($action, '/Orders/'.self::VERSION, self::VERSION, $params);
26
27
        return $this->parseResponse($response, $action.'Result', 'Orders.Order');
28
    }
29
30
    public function get($ids)
31
    {
32
        $ids = is_array($ids) ? $ids : func_get_args();
33
        $params = [];
34
35
        foreach ($ids as $key => $id) {
36
            $keyName = 'AmazonOrderId.Id.'.($key + 1);
37
            $params[$keyName] = $id;
38
        }
39
40
        $response = $this->client->post('GetOrder', '/Orders/'.self::VERSION, self::VERSION, $params);
41
42
        return $this->parseResponse($response, 'GetOrderResult', 'Orders.Order');
43
    }
44
45
    public function getItems($id)
46
    {
47
        $params = [
48
            'AmazonOrderId' => $id,
49
        ];
50
        $response = $this->client->post('ListOrderItems', '/Orders/'.self::VERSION, self::VERSION, $params);
51
52
        return $this->parseResponse($response, 'ListOrderItemsResult', 'OrderItems.OrderItem');
53
    }
54
55
    public function parseResponse($response, $resultTypeName, $dataName)
56
    {
57
        $requestId = data_get($response, 'ResponseMetadata.RequestId');
58
        $data = data_get($response, $resultTypeName.'.'.$dataName);
59
        $nextToken = data_get($response, $resultTypeName.'.NextToken');
60
        $createdBefore = data_get($response, $resultTypeName.'.CreatedBefore');
61
62
        //Check if single list item and wrap
63
        if (! is_null($data) && (! data_get($data, '0')) && in_array($resultTypeName, [
64
            'ListOrderItemsResult',
65
            'ListOrderItemsByNextTokenResult',
66
            'ListOrdersResult',
67
            'ListOrdersByNextTokenResult',
68
        ])) {
69
            $data = [$data];
70
        }
71
72
        $data = [
73
            'request_id' => $requestId,
74
            'data' => $data,
75
        ];
76
77
        if ($nextToken) {
78
            $data['next_token'] = $nextToken;
79
        }
80
81
        if ($createdBefore) {
82
            $data['created_before'] = $createdBefore;
83
        }
84
85
        if ($resultTypeName == 'ListOrderItemsResult') {
86
            $data['order_id'] = data_get($response, $resultTypeName.'.AmazonOrderId');
87
        }
88
89
        return $data;
90
    }
91
}
92