Skip to content

Commit 2922821

Browse files
authored
Merge pull request #208 from songfei9315/master
add
2 parents f29308c + 0954ca7 commit 2922821

File tree

6 files changed

+125
-14
lines changed

6 files changed

+125
-14
lines changed

examples/batch.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# -*- coding: utf-8 -*-
2+
# flake8: noqa
3+
from qiniu import Auth
4+
from qiniu import BucketManager,build_batch_rename
5+
# from qiniu import build_batch_copy,
6+
# from qiniu import build_batch_move,build_batch_rename
7+
access_key = 'access_key'
8+
secret_key = 'secret_key'
9+
10+
# 初始化Auth状态
11+
q = Auth(access_key, secret_key)
12+
13+
# 初始化BucketManager
14+
bucket = BucketManager(q)
15+
keys = {'123.jpg':'123.jpg'}
16+
17+
# ops = build_batch_copy( 'teest', keys, 'teest',force='true')
18+
# ops = build_batch_move('teest', keys, 'teest', force='true')
19+
ops = build_batch_rename('teest', keys,force='true')
20+
21+
ret, info = bucket.batch(ops)
22+
print(ret)
23+
print(info)
24+
assert ret == {}
25+

examples/fetch.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# -*- coding: utf-8 -*-
2+
# flake8: noqa
3+
4+
from qiniu import Auth
5+
from qiniu import BucketManager
6+
7+
access_key = 'access_key'
8+
secret_key = 'secret_key'
9+
bucket_name = 'xxx'
10+
q = Auth(access_key, secret_key)
11+
bucket = BucketManager(q)
12+
url = 'http://7xr875.com1.z0.glb.clouddn.com/test.jpg'
13+
key = 'test.jpg'
14+
ret, info = bucket.fetch( url, bucket_name, key)
15+
print(info)
16+
assert ret['key'] == key

examples/list.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# -*- coding: utf-8 -*-
2+
# flake8: noqa
3+
from qiniu import Auth
4+
from qiniu import BucketManager
5+
6+
access_key = 'access_key'
7+
secret_key = 'secret_key'
8+
9+
q = Auth(access_key, secret_key)
10+
bucket = BucketManager(q)
11+
12+
bucket_name = 'dontdelete'
13+
# 前缀
14+
prefix = None
15+
# 列举条目
16+
limit = 10
17+
# 列举出除'/'的所有文件以及以'/'为分隔的所有前缀
18+
delimiter = None
19+
# 标记
20+
marker = None
21+
22+
ret, eof, info = bucket.list(bucket_name, prefix, marker, limit, delimiter)
23+
24+
print(info)
25+
26+
assert len(ret.get('items')) is not None

qiniu/auth.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
'persistentOps', # 持久化处理操作
3535
'persistentNotifyUrl', # 持久化处理结果通知URL
3636
'persistentPipeline', # 持久化处理独享队列
37+
'deleteAfterDays', # 文件多少天后自动删除
3738
])
3839

3940
_deprecated_policy_fields = set([

qiniu/services/storage/bucket.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def delete(self, bucket, key):
100100
resource = entry(bucket, key)
101101
return self.__rs_do('delete', resource)
102102

103-
def rename(self, bucket, key, key_to):
103+
def rename(self, bucket, key, key_to, force='false'):
104104
"""重命名文件:
105105
106106
给资源进行重命名,本质为move操作。
@@ -114,9 +114,9 @@ def rename(self, bucket, key, key_to):
114114
一个dict变量,成功返回NULL,失败返回{"error": "<errMsg string>"}
115115
一个ResponseInfo对象
116116
"""
117-
return self.move(bucket, key, bucket, key_to)
117+
return self.move(bucket, key, bucket, key_to, force)
118118

119-
def move(self, bucket, key, bucket_to, key_to):
119+
def move(self, bucket, key, bucket_to, key_to, force='false'):
120120
"""移动文件:
121121
122122
将资源从一个空间到另一个空间,具体规格参考:
@@ -134,9 +134,9 @@ def move(self, bucket, key, bucket_to, key_to):
134134
"""
135135
resource = entry(bucket, key)
136136
to = entry(bucket_to, key_to)
137-
return self.__rs_do('move', resource, to)
137+
return self.__rs_do('move', resource, to, 'force/{0}'.format(force))
138138

139-
def copy(self, bucket, key, bucket_to, key_to):
139+
def copy(self, bucket, key, bucket_to, key_to, force='false'):
140140
"""复制文件:
141141
142142
将指定资源复制为新命名资源,具体规格参考:
@@ -154,7 +154,7 @@ def copy(self, bucket, key, bucket_to, key_to):
154154
"""
155155
resource = entry(bucket, key)
156156
to = entry(bucket_to, key_to)
157-
return self.__rs_do('copy', resource, to)
157+
return self.__rs_do('copy', resource, to, 'force/{0}'.format(force))
158158

159159
def fetch(self, url, bucket, key=None):
160160
"""抓取文件:
@@ -264,16 +264,16 @@ def _build_op(*args):
264264
return '/'.join(args)
265265

266266

267-
def build_batch_copy(source_bucket, key_pairs, target_bucket):
268-
return _two_key_batch('copy', source_bucket, key_pairs, target_bucket)
267+
def build_batch_copy(source_bucket, key_pairs, target_bucket, force='false'):
268+
return _two_key_batch('copy', source_bucket, key_pairs, target_bucket, force)
269269

270270

271-
def build_batch_rename(bucket, key_pairs):
272-
return build_batch_move(bucket, key_pairs, bucket)
271+
def build_batch_rename(bucket, key_pairs, force='false'):
272+
return build_batch_move(bucket, key_pairs, bucket, force)
273273

274274

275-
def build_batch_move(source_bucket, key_pairs, target_bucket):
276-
return _two_key_batch('move', source_bucket, key_pairs, target_bucket)
275+
def build_batch_move(source_bucket, key_pairs, target_bucket, force='false'):
276+
return _two_key_batch('move', source_bucket, key_pairs, target_bucket, force)
277277

278278

279279
def build_batch_delete(bucket, keys):
@@ -288,7 +288,7 @@ def _one_key_batch(operation, bucket, keys):
288288
return [_build_op(operation, entry(bucket, key)) for key in keys]
289289

290290

291-
def _two_key_batch(operation, source_bucket, key_pairs, target_bucket):
291+
def _two_key_batch(operation, source_bucket, key_pairs, target_bucket, force='false'):
292292
if target_bucket is None:
293293
target_bucket = source_bucket
294-
return [_build_op(operation, entry(source_bucket, k), entry(target_bucket, v)) for k, v in key_pairs.items()]
294+
return [_build_op(operation, entry(source_bucket, k), entry(target_bucket, v), 'force/{0}'.format(force)) for k, v in key_pairs.items()]

test_qiniu.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,25 @@ def test_change_mime(self):
176176
print(info)
177177
assert ret == {}
178178

179+
def test_copy(self):
180+
key = 'copyto'+rand_string(8)
181+
ret, info = self.bucket.copy(bucket_name, 'copyfrom', bucket_name, key)
182+
print(info)
183+
assert ret == {}
184+
ret, info = self.bucket.delete(bucket_name, key)
185+
print(info)
186+
assert ret == {}
187+
188+
def test_copy_force(self):
189+
ret, info = self.bucket.copy(bucket_name, 'copyfrom', bucket_name, 'copyfrom', force='true')
190+
print(info)
191+
assert info.status_code == 200
192+
193+
def test_change_mime(self):
194+
ret, info = self.bucket.change_mime(bucket_name, 'python-sdk.html', 'text/html')
195+
print(info)
196+
assert ret == {}
197+
179198
def test_batch_copy(self):
180199
key = 'copyto'+rand_string(8)
181200
ops = build_batch_copy(bucket_name, {'copyfrom': key}, bucket_name)
@@ -187,6 +206,12 @@ def test_batch_copy(self):
187206
print(info)
188207
assert ret[0]['code'] == 200
189208

209+
def test_batch_copy_force(self):
210+
ops = build_batch_copy(bucket_name, {'copyfrom': 'copyfrom'}, bucket_name, force='true')
211+
ret, info = self.bucket.batch(ops)
212+
print(info)
213+
assert ret[0]['code'] == 200
214+
190215
def test_batch_move(self):
191216
key = 'moveto'+rand_string(8)
192217
self.bucket.copy(bucket_name, 'copyfrom', bucket_name, key)
@@ -199,6 +224,15 @@ def test_batch_move(self):
199224
print(info)
200225
assert ret == {}
201226

227+
def test_batch_move_force(self):
228+
ret,info = self.bucket.copy(bucket_name, 'copyfrom', bucket_name, 'copyfrom', force='true')
229+
print(info)
230+
assert info.status_code == 200
231+
ops = build_batch_move(bucket_name, {'copyfrom':'copyfrom'}, bucket_name,force='true')
232+
ret, info = self.bucket.batch(ops)
233+
print(info)
234+
assert ret[0]['code'] == 200
235+
202236
def test_batch_rename(self):
203237
key = 'rename'+rand_string(8)
204238
self.bucket.copy(bucket_name, 'copyfrom', bucket_name, key)
@@ -211,6 +245,15 @@ def test_batch_rename(self):
211245
print(info)
212246
assert ret == {}
213247

248+
def test_batch_rename_force(self):
249+
ret,info = self.bucket.rename(bucket_name, 'copyfrom', 'copyfrom', force='true')
250+
print(info)
251+
assert info.status_code == 200
252+
ops = build_batch_rename(bucket_name, {'copyfrom':'copyfrom'}, force='true')
253+
ret, info = self.bucket.batch(ops)
254+
print(info)
255+
assert ret[0]['code'] == 200
256+
214257
def test_batch_stat(self):
215258
ops = build_batch_stat(bucket_name, ['python-sdk.html'])
216259
ret, info = self.bucket.batch(ops)

0 commit comments

Comments
 (0)