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

Region::queryRegion()   C

Complexity

Conditions 12
Paths 38

Size

Total Lines 50
Code Lines 33

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 22
CRAP Score 14.0256

Importance

Changes 2
Bugs 0 Features 1
Metric Value
cc 12
eloc 33
c 2
b 0
f 1
nc 38
nop 5
dl 0
loc 50
ccs 22
cts 29
cp 0.7586
crap 14.0256
rs 6.9666

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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