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 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 9
Zone
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 2
30
0.00% covered (danger)
0.00%
0 / 9
 setDefault
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 5
 set
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 4
1<?php
2
3
4namespace Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\Objects;
5
6
7use Qmp\Laravel\CDNApi\Cdn\KeyCDNProvider\AbstractObject;
8
9
10class Zone extends AbstractObject
11{
12    protected $data = [
13        'id' => null,
14        'name' => null, // required
15        'status' => null, // active or inactive
16        'type' => null, // pull or push
17        'forcedownload' => null, // enabled or disabled
18        'cors' => null, // enabled or disabled
19        'gzip' => null, // enabled or disabled
20        'expire' => null,
21        'blockbadbots' => null, // enabled or disabled
22        'allowemptyreferrer' => null, // enabled or disabled
23        'http2' => null,
24        'securetoken' => null, // enabled or disabled
25        'sslcert' => null, //shared,custom,letsencrypt or disabled
26        'customsslkey' => null,
27        'customsslcert' => null,
28        'forcessl' => null, // enabled or disabled
29        'originurl' => null, // required
30        'originshield' => null, // enabled or disabled
31        'cachemaxexpire' => null, // range: 1 to 525949
32        'cacheignorecachecontrol' => null, // enabled or disabled
33        'cacheignorequerystring' => null, // enabled or disabled
34        'cachehostheader' => null, // enabled or disabled
35        'cachekeyscheme' => null, // enabled or disabled
36        'cachekeyhost' => null, // enabled or disabled
37        'cachekeycookie' => null,
38        'cachekeydevice' => null, // enabled or disabled
39        'cachebr' => null, // enabled or disabled
40        'cachecookies' => null, // enabled or disabled
41        'cachestripcookies' => null, // enabled or disabled
42        'cachexpullkey' => null, // length: 4-15
43        'cachecanonical' => null, // enabled or disabled
44        'cacherobots' => null, // enabled or disabled
45        'cacheerrorpages' => null, // enabled or disabled
46        'dirlist' => null, // enabled or disabled
47        'dirindex' => null, // enabled or disabled
48        'urls' => null, // required array
49        'tags' => null, // required array
50        'zoneurl' => null
51    ];
52
53    protected $default = [
54        'id' => null,
55        'name' => null, // required
56        'status' => 'active', // active or inactive
57        'type' => 'pull', // pull or push
58        'forcedownload' => 'disabled', // enabled or disabled
59        'cors' => 'disabled', // enabled or disabled
60        'gzip' => 'disabled', // enabled or disabled
61        'expire' => 0,
62        'blockbadbots' => 'disabled', // enabled or disabled
63        'allowemptyreferrer' => 'disabled', // enabled or disabled
64        'http2' => null,
65        'securetoken' => 'disabled', // enabled or disabled
66        'sslcert' => 'letsencrypt', //shared,custom,letsencrypt or disabled
67        'customsslkey' => null,
68        'customsslcert' => null,
69        'forcessl' => 'disabled', // enabled or disabled
70        'originurl' => null, // required
71        'originshield' => 'disabled', // enabled or disabled
72        'cachemaxexpire' => 1440, // range: 1 to 525949 (time in minutes)
73        'cacheignorecachecontrol' => 'enabled', // enabled or disabled
74        'cacheignorequerystring' => 'enabled', // enabled or disabled
75        'cachehostheader' => 'disabled', // enabled or disabled
76        'cachekeyscheme' => 'disabled', // enabled or disabled
77        'cachekeyhost' => 'disabled', // enabled or disabled
78        'cachekeycookie' => null,
79        'cachekeydevice' => 'disabled', // enabled or disabled
80        'cachebr' => 'disabled', // enabled or disabled
81        'cachecookies' => 'disabled', // enabled or disabled
82        'cachestripcookies' => 'disabled', // enabled or disabled
83        'cachexpullkey' => 'KeyCDN', // length: 4-15
84        'cachecanonical' => 'disabled', // enabled or disabled
85        'cacherobots' => 'disabled', // enabled or disabled
86        'cacheerrorpages' => 'enabled', // enabled or disabled
87        'dirlist' => 'disabled', // enabled or disabled
88        'dirindex' => 'disabled', // enabled or disabled
89        'urls' => null, // required array
90        'tags' => null, // required array
91        'zoneurl' => null
92    ];
93
94    public function setDefault(array $data = [])
95    {
96        $this->data = $this->default;
97        foreach ($data as $key => $item) {
98            if (array_key_exists($key, $this->data)) {
99                $this->data[$key] = $item;
100            }
101        }
102    }
103
104    public function set(array $data = [])
105    {
106        parent::set($data);
107        if ($this->data['name']) {
108            $this->data['zoneurl'] = $data['name'] . env('KEYCDN_SUFFIX_URL', '-4b38.kxcdn.com');
109        }
110    }
111}