1
1
# -*- coding: utf-8 -*-
2
2
3
3
from qiniu import config
4
- from qiniu .utils import urlsafe_base64_encode , entry
5
4
from qiniu import http
5
+ from qiniu .utils import urlsafe_base64_encode , entry
6
6
7
7
8
8
class BucketManager (object ):
@@ -15,8 +15,12 @@ class BucketManager(object):
15
15
auth: 账号管理密钥对,Auth对象
16
16
"""
17
17
18
- def __init__ (self , auth ):
18
+ def __init__ (self , auth , zone = None ):
19
19
self .auth = auth
20
+ if (zone is None ):
21
+ self .zone = config .get_default ('default_zone' )
22
+ else :
23
+ self .zone = zone
20
24
21
25
def list (self , bucket , prefix = None , marker = None , limit = None , delimiter = None ):
22
26
"""前缀查询:
@@ -51,7 +55,7 @@ def list(self, bucket, prefix=None, marker=None, limit=None, delimiter=None):
51
55
if delimiter is not None :
52
56
options ['delimiter' ] = delimiter
53
57
54
- url = 'http:// {0}/list' .format (config .get_default ('default_rsf_host' ))
58
+ url = '{0}/list' .format (config .get_default ('default_rsf_host' ))
55
59
ret , info = self .__get (url , options )
56
60
57
61
eof = False
@@ -172,7 +176,7 @@ def fetch(self, url, bucket, key=None):
172
176
"""
173
177
resource = urlsafe_base64_encode (url )
174
178
to = entry (bucket , key )
175
- return self .__io_do ('fetch' , resource , 'to/{0}' .format (to ))
179
+ return self .__io_do (bucket , 'fetch' , resource , 'to/{0}' .format (to ))
176
180
177
181
def prefetch (self , bucket , key ):
178
182
"""镜像回源预取文件:
@@ -189,7 +193,7 @@ def prefetch(self, bucket, key):
189
193
一个ResponseInfo对象
190
194
"""
191
195
resource = entry (bucket , key )
192
- return self .__io_do ('prefetch' , resource )
196
+ return self .__io_do (bucket , 'prefetch' , resource )
193
197
194
198
def change_mime (self , bucket , key , mime ):
195
199
"""修改文件mimeType:
@@ -227,7 +231,7 @@ def batch(self, operations):
227
231
]
228
232
一个ResponseInfo对象
229
233
"""
230
- url = 'http:// {0}/batch' .format (config .get_default ('default_rs_host' ))
234
+ url = '{0}/batch' .format (config .get_default ('default_rs_host' ))
231
235
return self .__post (url , dict (op = operations ))
232
236
233
237
def buckets (self ):
@@ -245,12 +249,14 @@ def buckets(self):
245
249
def __rs_do (self , operation , * args ):
246
250
return self .__server_do (config .get_default ('default_rs_host' ), operation , * args )
247
251
248
- def __io_do (self , operation , * args ):
249
- return self .__server_do (config .get_default ('default_io_host' ), operation , * args )
252
+ def __io_do (self , bucket , operation , * args ):
253
+ ak = self .auth .get_access_key ()
254
+ io_host = self .zone .get_io_host (ak , bucket )
255
+ return self .__server_do (io_host , operation , * args )
250
256
251
257
def __server_do (self , host , operation , * args ):
252
258
cmd = _build_op (operation , * args )
253
- url = 'http:// {0}/{1}' .format (host , cmd )
259
+ url = '{0}/{1}' .format (host , cmd )
254
260
return self .__post (url )
255
261
256
262
def __post (self , url , data = None ):
0 commit comments