Completed
Push — master ( 50879e...0c72ae )
by Timur
03:18
created

ListIpAddressesCommand::getItemsFromJsonResponse()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 3
rs 10
c 0
b 0
f 0
cc 1
eloc 1
nc 1
nop 1
1
<?php
2
3
namespace Linode\Api\IpAddresses\Commands;
4
5
use Linode\Api\IpAddresses\IpAddress;
6
use Psr\Http\Message\ResponseInterface;
7
use Zurbaev\ApiClient\Commands\ListResourcesCommand;
8
use Zurbaev\ApiClient\Contracts\ApiResourceInterface;
9
10
class ListIpAddressesCommand extends ListResourcesCommand
11
{
12
    protected function itemsKey()
13
    {
14
        return '';
15
    }
16
17
    public function resourcePath()
18
    {
19
        return 'ips';
20
    }
21
22
    public function resourceClass()
23
    {
24
        return IpAddress::class;
25
    }
26
27
    protected function getItemsFromJsonResponse(array $json)
28
    {
29
        return $json;
30
    }
31
32
    protected function createResourcesFromJsonData(array $data, ResponseInterface $response, ApiResourceInterface $owner)
33
    {
34
        $visibilities = ['public', 'private', 'shared'];
35
        $items = [];
36
        $className = $this->resourceClass();
37
38
        foreach ($visibilities as $visibility) {
39
            if (!isset($data['ipv4'][$visibility])) {
40
                continue;
41
            }
42
43
            $item = $data['ipv4'][$visibility];
44
            $item['visibility'] = $visibility;
45
            $item['address_type'] = 'ipv4';
46
47
            $items[] = new $className($owner->getApi(), $item, $owner);
48
        }
49
50
        if (!empty($data['ipv6'])) {
51
            $data['ipv6']['address_type'] = 'ipv6';
52
53
            $items[] = new $className($owner->getApi(), $data['ipv6'], $owner);
54
        }
55
56
        return $items;
57
    }
58
}
59