Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 9 |
CRAP | |
0.00% |
0 / 68 |
Zone | |
0.00% |
0 / 1 |
|
0.00% |
0 / 9 |
1406 | |
0.00% |
0 / 68 |
zone | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 3 |
|||
zoneByName | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 5 |
|||
getZoneByAliasName | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 5 |
|||
getOneZone | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 6 |
|||
getAllZones | |
0.00% |
0 / 1 |
110 | |
0.00% |
0 / 21 |
|||
getZone | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 6 |
|||
createZone | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 8 |
|||
editZone | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 8 |
|||
deleteZone | |
0.00% |
0 / 1 |
20 | |
0.00% |
0 / 6 |
1 | <?php |
2 | namespace Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Traits; |
3 | |
4 | use Qmp\Laravel\CDNApi\Cdn\AbstractProvider; |
5 | use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Alias; |
6 | use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Referrer; |
7 | use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Stats; |
8 | use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects\Zone as ObjectZone; |
9 | |
10 | trait 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 | } |