Completed
Push — master ( c671b0...d2ed22 )
by r
86:37 queued 80:26
created

Zone::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 13
nc 1
nop 6
dl 0
loc 16
ccs 8
cts 8
cp 1
crap 1
rs 9.4285
c 0
b 0
f 0
1
<?php
2
namespace Qiniu;
3
4
use Qiniu\Http\Client;
5
use Qiniu\Http\Error;
6
7
final class Zone
8
{
9
10
    //源站上传域名
11
    public $srcUpHosts;
12
    //CDN加速上传域名
13
    public $cdnUpHosts;
14
    //资源管理域名
15
    public $rsHost;
16
    //资源列举域名
17
    public $rsfHost;
18
    //资源处理域名
19
    public $apiHost;
20
    //IOVIP域名
21
    public $iovipHost;
22
23
    //构造一个Zone对象
24 30
    public function __construct(
25
        $srcUpHosts = array(),
26
        $cdnUpHosts = array(),
27
        $rsHost = "rs.qiniu.com",
28
        $rsfHost = "rsf.qiniu.com",
29
        $apiHost = "api.qiniu.com",
30
        $iovipHost = null
31
    ) {
32
33 30
        $this->srcUpHosts = $srcUpHosts;
34 30
        $this->cdnUpHosts = $cdnUpHosts;
35 30
        $this->rsHost = $rsHost;
36 30
        $this->rsfHost = $rsfHost;
37 30
        $this->apiHost = $apiHost;
38 30
        $this->iovipHost = $iovipHost;
39 30
    }
40
41
    //华东机房
42
    public static function zone0()
43
    {
44
        $Zone_z0 = new Zone(
45
            array("up.qiniup.com", 'up-jjh.qiniup.com', 'up-xs.qiniup.com'),
46
            array('upload.qiniup.com', 'upload-jjh.qiniup.com', 'upload-xs.qiniup.com'),
47
            'rs.qiniu.com',
48
            'rsf.qiniu.com',
49
            'api.qiniu.com',
50
            'iovip.qbox.me'
51
        );
52
        return $Zone_z0;
53
    }
54
55
    //华北机房
56
    public static function zone1()
57
    {
58
        $Zone_z1 = new Zone(
59
            array('up-z1.qiniup.com'),
60
            array('upload-z1.qiniup.com'),
61
            "rs-z1.qiniu.com",
62
            "rsf-z1.qiniu.com",
63
            "api-z1.qiniu.com",
64
            "iovip-z1.qbox.me"
65
        );
66
67
        return $Zone_z1;
68
    }
69
70
    //华南机房
71
    public static function zone2()
72
    {
73
        $Zone_z2 = new Zone(
74
            array('up-z2.qiniup.com', 'up-dg.qiniup.com', 'up-fs.qiniup.com'),
75
            array('upload-z2.qiniup.com', 'upload-dg.qiniup.com', 'upload-fs.qiniup.com'),
76
            "rs-z2.qiniu.com",
77
            "rsf-z2.qiniu.com",
78
            "api-z2.qiniu.com",
79
            "iovip-z2.qbox.me"
80
        );
81
        return $Zone_z2;
82
    }
83
84
    //北美机房
85
    public static function zoneNa0()
86
    {
87
        //北美机房
88
        $Zone_na0 = new Zone(
89
            array('up-na0.qiniup.com'),
90
            array('upload-na0.qiniup.com'),
91
            "rs-na0.qiniu.com",
92
            "rsf-na0.qiniu.com",
93
            "api-na0.qiniu.com",
94
            "iovip-na0.qbox.me"
95
        );
96
        return $Zone_na0;
97
    }
98
99
    //新加坡机房
100
    public static function zoneAs0()
101
    {
102
        //新加坡机房
103
        $Zone_as0 = new Zone(
104
            array('up-as0.qiniup.com'),
105
            array('upload-as0.qiniup.com'),
106
            "rs-as0.qiniu.com",
107
            "rsf-as0.qiniu.com",
108
            "api-as0.qiniu.com",
109
            "iovip-as0.qbox.me"
110
        );
111
        return $Zone_as0;
112
    }
113
114
    /*
115
     * GET /v2/query?ak=<ak>&&bucket=<bucket>
116
     **/
117 27
    public static function queryZone($ak, $bucket)
118
    {
119 27
        $zone = new Zone();
120 27
        $url = Config::UC_HOST . '/v2/query' . "?ak=$ak&bucket=$bucket";
121 27
        $ret = Client::Get($url);
122 27
        if (!$ret->ok()) {
123
            return array(null, new Error($url, $ret));
124
        }
125 27
        $r = ($ret->body === null) ? array() : $ret->json();
126
        //print_r($ret);
127
        //parse zone;
128
129 27
        $iovipHost = $r['io']['src']['main'][0];
130 27
        $zone->iovipHost = $iovipHost;
131 27
        $accMain = $r['up']['acc']['main'][0];
132 27
        array_push($zone->cdnUpHosts, $accMain);
133 27
        if (isset($r['up']['acc']['backup'])) {
134 27
            foreach ($r['up']['acc']['backup'] as $key => $value) {
135 27
                array_push($zone->cdnUpHosts, $value);
136 18
            }
137 18
        }
138 27
        $srcMain = $r['up']['src']['main'][0];
139 27
        array_push($zone->srcUpHosts, $srcMain);
140 27
        if (isset($r['up']['src']['backup'])) {
141 27
            foreach ($r['up']['src']['backup'] as $key => $value) {
142 27
                array_push($zone->srcUpHosts, $value);
143 18
            }
144 18
        }
145
146
        //set specific hosts
147 27
        if (strstr($zone->iovipHost, "z1") !== false) {
148 6
            $zone->rsHost = "rs-z1.qiniu.com";
149 6
            $zone->rsfHost = "rsf-z1.qiniu.com";
150 6
            $zone->apiHost = "api-z1.qiniu.com";
151 27
        } elseif (strstr($zone->iovipHost, "z2") !== false) {
152
            $zone->rsHost = "rs-z2.qiniu.com";
153
            $zone->rsfHost = "rsf-z2.qiniu.com";
154
            $zone->apiHost = "api-z2.qiniu.com";
155 27
        } elseif (strstr($zone->iovipHost, "na0") !== false) {
156 6
            $zone->rsHost = "rs-na0.qiniu.com";
157 6
            $zone->rsfHost = "rsf-na0.qiniu.com";
158 6
            $zone->apiHost = "api-na0.qiniu.com";
159 27
        } elseif (strstr($zone->iovipHost, "as0") !== false) {
160
            $zone->rsHost = "rs-as0.qiniu.com";
161
            $zone->rsfHost = "rsf-as0.qiniu.com";
162
            $zone->apiHost = "api-as0.qiniu.com";
163
        } else {
164 27
            $zone->rsHost = "rs.qiniu.com";
165 27
            $zone->rsfHost = "rsf.qiniu.com";
166 27
            $zone->apiHost = "api.qiniu.com";
167
        }
168
169 27
        return $zone;
170
    }
171
}
172