Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 9
CRAP
0.00% covered (danger)
0.00%
0 / 68
Zone
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 9
1406
0.00% covered (danger)
0.00%
0 / 68
 zone
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 3
 zoneByName
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 5
 getZoneByAliasName
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 5
 getOneZone
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 6
 getAllZones
0.00% covered (danger)
0.00%
0 / 1
110
0.00% covered (danger)
0.00%
0 / 21
 getZone
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 6
 createZone
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 8
 editZone
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 8
 deleteZone
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 6
1<?php
2namespace Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Traits;
3
4use Qmp\Laravel\CDNApi\Cdn\AbstractProvider;
5use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Alias;
6use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Referrer;
7use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Stats;
8use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Zone as ObjectZone;
9
10trait Zone
11{
12    public function zone($id = null, $aliases = true, $referrers = true)
13    {
14        if ($id !== null) { // one
15            return $this->getOneZone($id, $aliases, $referrers);
16        } else { // all
17            return $this->getAllZones($aliases, $referrers);
18        }
19    }
20
21    public function zoneByName($name, $aliases = true, $referrers = true)
22    {
23        $allZones = $this->getAllZones($aliases, $referrers);
24        foreach ($allZones as $zone) {
25            if ($zone['name'] === $name) {
26                return $zone;
27            }
28        }
29
30        return null;
31    }
32
33    public function getZoneByAliasName($aliasName, $aliases = true, $referrers = true)
34    {
35        $zoneAliases = $this->getZoneAliases();
36        foreach ($zoneAliases as $alias) {
37            if ($alias['name'] === $aliasName) {
38                return $this->zone($alias['zone_id'], $aliases, $referrers);
39            }
40        }
41
42        return null;
43    }
44
45    protected function getOneZone($id, $aliases = true, $referrers = true)
46    {
47        $zone = $this->getZone($id);
48        if ($aliases) {
49            $zone['aliases'] = $this->getZoneAliases($id);
50        }
51
52        if ($referrers) {
53            $zone['referrers'] = $this->getZoneReferrers($id);
54        }
55
56        return $zone;
57    }
58
59    protected function getAllZones($aliases = true, $referrers = true)
60    {
61        $resultZones = $this->send('list_zone');
62        $response = [];
63        if (isset($resultZones['status']) && $resultZones['status'] == 'success' && isset($resultZones['data']['zones'])) {
64            foreach ($resultZones['data']['zones'] as $zone) {
65                $zone = new ObjectZone($zone);
66                $response[] = $zone->all();
67            }
68        }
69
70        if ($aliases) {
71            $resultAliases = $this->getZoneAliases();
72        }
73
74        if ($referrers) {
75            $resultReferrers = $this->getZoneReferrers();
76        }
77
78        foreach ($response as &$zone) {
79            $zoneId = $zone['id'];
80            if ($aliases) {
81                $zone['aliases'] = array_filter($resultAliases, function($alias) use ($zoneId) {
82                    return $zoneId == $alias['zone_id'];
83                });
84            }
85
86            if ($referrers) {
87                $zone['referrers'] = array_filter($resultReferrers, function($referrer) use ($zoneId) {
88                    return $zoneId == $referrer['zone_id'];
89                });
90            }
91        }
92
93        return $response;
94    }
95
96    protected function getZone($id)
97    {
98        $zone = new ObjectZone();
99        $zone->setId($id);
100        $result = $this->send('view_zone', $zone);
101
102        if (isset($result['status']) && $result['status'] == 'success' && isset($result['data']['zone'])) {
103            $zone->set($result['data']['zone']);
104        }
105
106        return $zone->all();
107    }
108
109    public function createZone(array $data = [])
110    {
111        $zone = new ObjectZone();
112        $zone->setDefault($data);
113        $result = $this->send('add_zone', $zone);
114        if (isset($result['status']) && $result['status'] == 'success' && isset($result['data']['zone'])) {
115            $zone->set($result['data']['zone']);
116            $zone->setId($zone->id);
117            return $zone->all();
118        }
119
120        return false;
121    }
122
123    public function editZone($id, array $data = [])
124    {
125        $zone = new ObjectZone($data);
126        $zone->setId($id);
127        $result = $this->send('edit_zone', $zone);
128        if (isset($result['status']) && $result['status'] == 'success' && isset($result['data']['zone'])) {
129            $zone->set($result['data']['zone']);
130            $zone->setId($zone->id);
131            return $zone->all();
132        }
133
134        return false;
135    }
136
137    public function deleteZone($id)
138    {
139        $zone = new ObjectZone();
140        $zone->setId($id);
141
142        if (!$this->deleteAliases($zone->getId()) || !$this->deleteReferrers($zone->getId())) {
143            return false;
144        }
145
146        $result = $this->send('delete_zone', $zone);
147
148        return isset($result['status']) && $result['status'] == 'success';
149    }
150
151
152}