Completed
Push — master ( f8ab35...d09888 )
by
unknown
48:01 queued 44:09
created

Zone   A

Complexity

Total Complexity 15

Size/Duplication

Total Lines 145
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 32.95%

Importance

Changes 0
Metric Value
dl 0
loc 145
ccs 29
cts 88
cp 0.3295
rs 10
c 0
b 0
f 0
wmc 15
lcom 1
cbo 3

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 16 1
A zone0() 0 12 1
A zone1() 0 13 1
A zone2() 0 12 1
A zoneNa0() 0 13 1
C queryZone() 0 49 10
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-nb.qiniup.com', 'up-xs.qiniup.com'),
46
            array('upload.qiniup.com', 'upload-nb.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-gz.qiniup.com', 'up-fs.qiniup.com'),
75
            array('upload-z2.qiniup.com', 'upload-gz.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
     * GET /v2/query?ak=<ak>&&bucket=<bucket>
101
     **/
102 27
    public static function queryZone($ak, $bucket)
103
    {
104 27
        $zone = new Zone();
105 27
        $url = Config::UC_HOST . '/v2/query' . "?ak=$ak&bucket=$bucket";
106 27
        $ret = Client::Get($url);
107 27
        if (!$ret->ok()) {
108
            return array(null, new Error($url, $ret));
109
        }
110 27
        $r = ($ret->body === null) ? array() : $ret->json();
111
        //parse zone;
112
113 27
        $iovipHost = $r['io']['src']['main'][0];
114 27
        $zone->iovipHost = $iovipHost;
115 27
        $accMain = $r['up']['acc']['main'][0];
116 27
        array_push($zone->cdnUpHosts, $accMain);
117 27
        if (isset($r['up']['acc']['backup'])) {
118
            foreach ($r['up']['acc']['backup'] as $key => $value) {
119
                array_push($zone->cdnUpHosts, $value);
120
            }
121
        }
122 27
        $srcMain = $r['up']['src']['main'][0];
123 27
        array_push($zone->srcUpHosts, $srcMain);
124 27
        if (isset($r['up']['src']['backup'])) {
125
            foreach ($r['up']['src']['backup'] as $key => $value) {
126
                array_push($zone->srcUpHosts, $value);
127
            }
128
        }
129
130
        //set specific hosts
131 27
        if (strstr($zone->iovipHost, "z1") !== false) {
132
            $zone->rsHost = "rs-z1.qiniu.com";
133
            $zone->rsfHost = "rsf-z1.qiniu.com";
134
            $zone->apiHost = "api-z1.qiniu.com";
135 27
        } elseif (strstr($zone->iovipHost, "z2") !== false) {
136
            $zone->rsHost = "rs-z2.qiniu.com";
137
            $zone->rsfHost = "rsf-z2.qiniu.com";
138
            $zone->apiHost = "api-z2.qiniu.com";
139 27
        } elseif (strstr($zone->iovipHost, "na0") !== false) {
140
            $zone->rsHost = "rs-na0.qiniu.com";
141
            $zone->rsfHost = "rsf-na0.qiniu.com";
142
            $zone->apiHost = "api-na0.qiniu.com";
143
        } else {
144 27
            $zone->rsHost = "rs.qiniu.com";
145 27
            $zone->rsfHost = "rsf.qiniu.com";
146 27
            $zone->apiHost = "api.qiniu.com";
147
        }
148
149 27
        return $zone;
150
    }
151
}
152