Completed
Push — master ( e69ce8...f367c4 )
by
unknown
18s queued 16s
created

Region::regionSeoul()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 7
nc 1
nop 0
dl 0
loc 10
ccs 10
cts 10
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
namespace Qiniu;
3
4
use Qiniu\Http\Client;
5
use Qiniu\Http\Error;
6
use Qiniu\Http\Middleware\RetryDomainsMiddleware;
7
use Qiniu\Http\RequestOptions;
8
9
class Region
10
{
11
12
    //源站上传域名
13
    public $srcUpHosts;
14
    //CDN加速上传域名
15
    public $cdnUpHosts;
16
    //资源管理域名
17
    public $rsHost;
18
    //资源列举域名
19
    public $rsfHost;
20
    //资源处理域名
21
    public $apiHost;
22
    //IOVIP域名
23
    public $iovipHost;
24 30
    // TTL
25
    public $ttl;
26
27
    //构造一个Region对象
28
    public function __construct(
29
        $srcUpHosts = array(),
30
        $cdnUpHosts = array(),
31
        $rsHost = "rs-z0.qiniuapi.com",
32
        $rsfHost = "rsf-z0.qiniuapi.com",
33 30
        $apiHost = "api.qiniuapi.com",
34 30
        $iovipHost = null,
35 30
        $ttl = null
36 30
    ) {
37 30
38 30
        $this->srcUpHosts = $srcUpHosts;
39 30
        $this->cdnUpHosts = $cdnUpHosts;
40
        $this->rsHost = $rsHost;
41
        $this->rsfHost = $rsfHost;
42
        $this->apiHost = $apiHost;
43
        $this->iovipHost = $iovipHost;
44
        $this->ttl = $ttl;
45
    }
46
47
    //华东机房
48
    public static function regionHuadong()
49
    {
50
        $regionHuadong = new Region(
51
            array("up.qiniup.com"),
52
            array('upload.qiniup.com'),
53
            'rs-z0.qiniuapi.com',
54
            'rsf-z0.qiniuapi.com',
55
            'api.qiniuapi.com',
56
            'iovip.qbox.me'
57
        );
58
        return $regionHuadong;
59
    }
60
61
    //华东机房内网上传
62
    public static function qvmRegionHuadong()
63
    {
64
        $qvmRegionHuadong = new Region(
65
            array("free-qvm-z0-xs.qiniup.com"),
66
            'rs-z0.qiniuapi.com',
67
            'rsf-z0.qiniuapi.com',
68
            'api.qiniuapi.com',
69
            'iovip.qbox.me'
70
        );
71
        return $qvmRegionHuadong;
72
    }
73
74
    //华北机房内网上传
75
    public static function qvmRegionHuabei()
76
    {
77
        $qvmRegionHuabei = new Region(
78
            array("free-qvm-z1-zz.qiniup.com"),
79
            "rs-z1.qiniuapi.com",
80
            "rsf-z1.qiniuapi.com",
81
            "api-z1.qiniuapi.com",
82
            "iovip-z1.qbox.me"
83
        );
84
        return $qvmRegionHuabei;
85
    }
86
87
    //华北机房
88
    public static function regionHuabei()
89
    {
90
        $regionHuabei = new Region(
91
            array('up-z1.qiniup.com'),
92
            array('upload-z1.qiniup.com'),
93
            "rs-z1.qiniuapi.com",
94
            "rsf-z1.qiniuapi.com",
95
            "api-z1.qiniuapi.com",
96
            "iovip-z1.qbox.me"
97
        );
98
99
        return $regionHuabei;
100
    }
101
102
    //华南机房
103
    public static function regionHuanan()
104
    {
105
        $regionHuanan = new Region(
106
            array('up-z2.qiniup.com'),
107
            array('upload-z2.qiniup.com'),
108
            "rs-z2.qiniuapi.com",
109
            "rsf-z2.qiniuapi.com",
110
            "api-z2.qiniuapi.com",
111
            "iovip-z2.qbox.me"
112
        );
113
        return $regionHuanan;
114
    }
115
116
    //华东2 机房
117
    public static function regionHuadong2()
118
    {
119
        return new Region(
120
            array('up-cn-east-2.qiniup.com'),
121
            array('upload-cn-east-2.qiniup.com'),
122
            "rs-cn-east-2.qiniuapi.com",
123
            "rsf-cn-east-2.qiniuapi.com",
124
            "api-cn-east-2.qiniuapi.com",
125
            "iovip-cn-east-2.qiniuio.com"
126
        );
127
    }
128
129
    //北美机房
130
    public static function regionNorthAmerica()
131
    {
132
        //北美机房
133
        $regionNorthAmerica = new Region(
134
            array('up-na0.qiniup.com'),
135
            array('upload-na0.qiniup.com'),
136
            "rs-na0.qiniuapi.com",
137
            "rsf-na0.qiniuapi.com",
138
            "api-na0.qiniuapi.com",
139
            "iovip-na0.qbox.me"
140
        );
141
        return $regionNorthAmerica;
142
    }
143 27
144
    //新加坡机房
145 27
    public static function regionSingapore()
146 27
    {
147 27
        //新加坡机房
148 27
        $regionSingapore = new Region(
149
            array('up-as0.qiniup.com'),
150
            array('upload-as0.qiniup.com'),
151 27
            "rs-as0.qiniuapi.com",
152
            "rsf-as0.qiniuapi.com",
153
            "api-as0.qiniuapi.com",
154 27
            "iovip-as0.qbox.me"
155 27
        );
156 27
        return $regionSingapore;
157 27
    }
158 27
159 27
    /*
160 27
     * GET /v4/query?ak=<ak>&bucket=<bucket>
161 27
     **/
162 27
    public static function queryRegion($ak, $bucket, $ucHost = null, $backupUcHosts = array(), $retryTimes = 2)
163 27
    {
164 27
        $region = new Region();
165 27
        if (!$ucHost) {
166 27
            $ucHost = "https://" . Config::UC_HOST;
167 27
        }
168 27
        $url = $ucHost . '/v4/query' . "?ak=$ak&bucket=$bucket";
169 27
        $reqOpt = new RequestOptions();
170
        $reqOpt->middlewares = array(
171
            new RetryDomainsMiddleware(
172 27
                $backupUcHosts,
173 6
                $retryTimes
174 6
            )
175 6
        );
176 27
        $ret = Client::Get($url, array(), $reqOpt);
177
        if (!$ret->ok()) {
178
            return array(null, new Error($url, $ret));
179
        }
180 27
        $r = ($ret->body === null) ? array() : $ret->json();
181 6
        if (!is_array($r["hosts"]) || count($r["hosts"]) == 0) {
182 6
            return array(null, new Error($url, $ret));
183 6
        }
184 27
185
        // parse region;
186
        $regionHost = $r["hosts"][0];
187
        $region->cdnUpHosts = array_merge($region->cdnUpHosts, $regionHost['up']['domains']);
188
        $region->srcUpHosts = array_merge($region->srcUpHosts, $regionHost['up']['domains']);
189 27
190 27
        // set specific hosts
191 27
        $region->iovipHost = $regionHost['io']['domains'][0];
192
        if (isset($regionHost['rs']['domains']) && count($regionHost['rs']['domains']) > 0) {
193
            $region->rsHost = $regionHost['rs']['domains'][0];
194 27
        } else {
195
            $region->rsHost = Config::RS_HOST;
196
        }
197
        if (isset($regionHost['rsf']['domains']) && count($regionHost['rsf']['domains']) > 0) {
198
            $region->rsfHost = $regionHost['rsf']['domains'][0];
199
        } else {
200
            $region->rsfHost = Config::RSF_HOST;
201
        }
202
        if (isset($regionHost['api']['domains']) && count($regionHost['api']['domains']) > 0) {
203
            $region->apiHost = $regionHost['api']['domains'][0];
204
        } else {
205
            $region->apiHost = Config::API_HOST;
206
        }
207
208
        // set ttl
209
        $region->ttl = $regionHost['ttl'];
210
211
        return $region;
212
    }
213
}
214