cos 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +2 -2
- data/README.md +143 -128
- data/bin/cos +4 -4
- data/lib/cos/bucket.rb +5 -1
- data/lib/cos/download.rb +2 -1
- data/lib/cos/exception.rb +3 -0
- data/lib/cos/file.rb +2 -1
- data/lib/cos/http.rb +1 -1
- data/lib/cos/resource.rb +1 -0
- data/lib/cos/slice.rb +27 -19
- data/lib/cos/version.rb +1 -1
- metadata +24 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3df8feb5feb55c8ddf5ae731af49b213922403df
|
4
|
+
data.tar.gz: a5dda119bacdf36fd039c83b5576680ae175cd5f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4095898e274f51ba793ac739b7ec69cddae487c13ef430015bfa533d163afc07f6bb7ad75ae4fb9c06fdab01625c5100d85f3ee983543222fa7206fa0f14e5de
|
7
|
+
data.tar.gz: a4f5268e15a3a20b2dfabd0a52c3ddeb2a06b8519ac4666906df81cc3853a7b503fb0a1a76a3a2603a7ae97ab9598349ec39e3edb37d04e2aef03c4a7ab60f2b
|
data/.travis.yml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
3
|
- 1.9.3
|
4
|
-
- jruby-19mode
|
4
|
+
# - jruby-19mode
|
5
5
|
- 2.0
|
6
6
|
- 2.1
|
7
7
|
- 2.2
|
@@ -12,4 +12,4 @@ before_install: gem install bundler
|
|
12
12
|
|
13
13
|
addons:
|
14
14
|
code_climate:
|
15
|
-
repo_token:
|
15
|
+
repo_token: 21930d55f6bdf5716ba7138f38e30ea6726226b3219ae17372e254700f58fe09
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Tencent COS Ruby SDK
|
2
2
|
|
3
|
-
[](https://badge.fury.io/rb/cos) [](https://badge.fury.io/rb/cos) [](https://gemnasium.com/RaymondChou/cos-ruby-sdk)
|
4
|
+
[](https://codeclimate.com/github/RaymondChou/cos-ruby-sdk) [](https://travis-ci.org/RaymondChou/cos-ruby-sdk) [](https://codeclimate.com/github/RaymondChou/cos-ruby-sdk/coverage)
|
4
5
|
|
5
6
|
[](https://gitter.im/RaymondChou/cos-ruby-sdk?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) [](https://rubygems.org/gems/cos) [](https://github.com/RaymondChou/cos-ruby-sdk) [](http://rubydoc.info/github/RaymondChou/cos-ruby-sdk)
|
6
7
|
|
@@ -20,7 +21,7 @@ Tencent🐧 COS(Cloud Object Service) SDK for Ruby [腾讯云对象存储服务
|
|
20
21
|
|
21
22
|
- 支持Rails
|
22
23
|
|
23
|
-
- 提供便捷的CLI工具:
|
24
|
+
- 提供便捷的[CLI工具:](#6-cli%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7)
|
24
25
|
|
25
26
|

|
26
27
|
|
@@ -38,69 +39,69 @@ Tencent🐧 COS(Cloud Object Service) SDK for Ruby [腾讯云对象存储服务
|
|
38
39
|
- [4 SDK详细说明](#4-sdk%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E)
|
39
40
|
- [4.1 初始化与配置](#41-%E5%88%9D%E5%A7%8B%E5%8C%96%E4%B8%8E%E9%85%8D%E7%BD%AE)
|
40
41
|
- [4.2 指定Bucket](#42-%E6%8C%87%E5%AE%9Abucket)
|
41
|
-
- [4.3 Bucket操作(COS::Bucket)](#43-bucket%E6%93%8D%E4%BD%
|
42
|
+
- [4.3 Bucket操作(COS::Bucket)](#43-bucket%E6%93%8D%E4%BD%9Ccosbucket)
|
42
43
|
- [4.3.1 获取Bucket属性](#431-%E8%8E%B7%E5%8F%96bucket%E5%B1%9E%E6%80%A7)
|
43
|
-
- [4.3.2 创建目录(create_folder,mkdir)](#432-%E5%88%9B%E5%BB%BA%E7%9B%AE%E5%BD%
|
44
|
-
- [4.3.3 列举目录(list,ls)](#433-%E5%88%97%E4%B8%BE%E7%9B%AE%E5%BD%
|
45
|
-
- [4.3.4 上传文件(upload)](#434-%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%
|
46
|
-
- [4.3.4 资源属性(stat)](#434-%E8%B5%84%E6%BA%90%E5%B1%9E%E6%80%
|
47
|
-
- [4.3.5 更新资源属性(upadte)](#435-%E6%9B%B4%E6%96%B0%E8%B5%84%E6%BA%90%E5%B1%9E%E6%80%
|
48
|
-
- [4.3.6 删除资源(delete)](#436-%E5%88%A0%E9%99%A4%E8%B5%84%E6%BA%
|
49
|
-
- [4.3.7 删除资源(无异常)(delete!)](#437-%E5%88%A0%E9%99%A4%E8%B5%84%E6%BA%90%
|
50
|
-
- [4.3.8 判断目录是否为空(empty?)](#438-%E5%88%A4%E6%96%AD%E7%9B%AE%E5%BD%95%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%
|
51
|
-
- [4.3.9 判断资源是否存在(exist?,exists?)](#439-%E5%88%A4%E6%96%AD%E8%B5%84%E6%BA%90%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%
|
52
|
-
- [4.3.9 判断文件是否上传完成(complete?)](#439-%E5%88%A4%E6%96%AD%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E4%B8%8A%E4%BC%A0%E5%AE%8C%E6%88%
|
53
|
-
- [4.3.10 获取文件的访问URL(url)](#4310-%E8%8E%B7%E5%8F%96%E6%96%87%E4%BB%B6%E7%9A%84%E8%AE%BF%E9%97%
|
54
|
-
- [4.3.11 下载文件(download)](#4311-%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%
|
55
|
-
- [4.3.12 获取Object树形结构(tree)](#4312-%E8%8E%B7%E5%8F%96object%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%
|
56
|
-
- [4.3.13 获取Hash树形结构(hash_tree)](#4313-%E8%8E%B7%E5%8F%96hash%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%
|
57
|
-
- [4.3.14 批量下载目录下的所有文件(download_all)](#4314-%E6%89%B9%E9%87%8F%E4%B8%8B%E8%BD%BD%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%
|
58
|
-
- [4.3.15 批量上传目录中的所有文件(upload_all)](#4315-%E6%89%B9%E9%87%8F%E4%B8%8A%E4%BC%A0%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%
|
59
|
-
- [4.3.16 获取资源个数详情(支持前缀搜索)(list_count)](#4316-%E8%8E%B7%E5%8F%96%E8%B5%84%E6%BA%90%E4%B8%AA%E6%95%B0%E8%AF%A6%E6%83%85%
|
60
|
-
- [4.3.17 获取资源个数(count, size)](#4317-%E8%8E%B7%E5%8F%96%E8%B5%84%E6%BA%90%E4%B8%AA%E6%95%
|
61
|
-
- [4.3.18 获取文件个数(count_files)](#4318-%E8%8E%B7%E5%8F%96%E6%96%87%E4%BB%B6%E4%B8%AA%E6%95%
|
62
|
-
- [4.3.19 获取目录个数(count_dirs)](#4319-%E8%8E%B7%E5%8F%96%E7%9B%AE%E5%BD%95%E4%B8%AA%E6%95%
|
44
|
+
- [4.3.2 创建目录(create_folder,mkdir)](#432-%E5%88%9B%E5%BB%BA%E7%9B%AE%E5%BD%95create_folder)
|
45
|
+
- [4.3.3 列举目录(list,ls)](#433-%E5%88%97%E4%B8%BE%E7%9B%AE%E5%BD%95listls)
|
46
|
+
- [4.3.4 上传文件(upload)](#434-%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6upload)
|
47
|
+
- [4.3.4 资源属性(stat)](#434-%E8%B5%84%E6%BA%90%E5%B1%9E%E6%80%A7stat)
|
48
|
+
- [4.3.5 更新资源属性(upadte)](#435-%E6%9B%B4%E6%96%B0%E8%B5%84%E6%BA%90%E5%B1%9E%E6%80%A7upadte)
|
49
|
+
- [4.3.6 删除资源(delete)](#436-%E5%88%A0%E9%99%A4%E8%B5%84%E6%BA%90delete)
|
50
|
+
- [4.3.7 删除资源(无异常)(delete!)](#437-%E5%88%A0%E9%99%A4%E8%B5%84%E6%BA%90%E6%97%A0%E5%BC%82%E5%B8%B8delete)
|
51
|
+
- [4.3.8 判断目录是否为空(empty?)](#438-%E5%88%A4%E6%96%AD%E7%9B%AE%E5%BD%95%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%BAempty)
|
52
|
+
- [4.3.9 判断资源是否存在(exist?,exists?)](#439-%E5%88%A4%E6%96%AD%E8%B5%84%E6%BA%90%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8existexists)
|
53
|
+
- [4.3.9 判断文件是否上传完成(complete?)](#439-%E5%88%A4%E6%96%AD%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E4%B8%8A%E4%BC%A0%E5%AE%8C%E6%88%90complete)
|
54
|
+
- [4.3.10 获取文件的访问URL(url)](#4310-%E8%8E%B7%E5%8F%96%E6%96%87%E4%BB%B6%E7%9A%84%E8%AE%BF%E9%97%AEurlurl)
|
55
|
+
- [4.3.11 下载文件(download)](#4311-%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6download)
|
56
|
+
- [4.3.12 获取Object树形结构(tree)](#4312-%E8%8E%B7%E5%8F%96object%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%84tree)
|
57
|
+
- [4.3.13 获取Hash树形结构(hash_tree)](#4313-%E8%8E%B7%E5%8F%96hash%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%84hash_tree)
|
58
|
+
- [4.3.14 批量下载目录下的所有文件(download_all)](#4314-%E6%89%B9%E9%87%8F%E4%B8%8B%E8%BD%BD%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6download_all)
|
59
|
+
- [4.3.15 批量上传目录中的所有文件(upload_all)](#4315-%E6%89%B9%E9%87%8F%E4%B8%8A%E4%BC%A0%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6upload_all)
|
60
|
+
- [4.3.16 获取资源个数详情(支持前缀搜索)(list_count)](#4316-%E8%8E%B7%E5%8F%96%E8%B5%84%E6%BA%90%E4%B8%AA%E6%95%B0%E8%AF%A6%E6%83%85%E6%94%AF%E6%8C%81%E5%89%8D%E7%BC%80%E6%90%9C%E7%B4%A2list_count)
|
61
|
+
- [4.3.17 获取资源个数(count, size)](#4317-%E8%8E%B7%E5%8F%96%E8%B5%84%E6%BA%90%E4%B8%AA%E6%95%B0count-size)
|
62
|
+
- [4.3.18 获取文件个数(count_files)](#4318-%E8%8E%B7%E5%8F%96%E6%96%87%E4%BB%B6%E4%B8%AA%E6%95%B0count_files)
|
63
|
+
- [4.3.19 获取目录个数(count_dirs)](#4319-%E8%8E%B7%E5%8F%96%E7%9B%AE%E5%BD%95%E4%B8%AA%E6%95%B0count_dirs)
|
63
64
|
- [4.4 资源操作](#44-%E8%B5%84%E6%BA%90%E6%93%8D%E4%BD%9C)
|
64
|
-
- [4.4.1 文件操作(COS::COSFile)](#441-%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%
|
65
|
+
- [4.4.1 文件操作(COS::COSFile)](#441-%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9Ccoscosfile)
|
65
66
|
- [4.4.1.1 获取文件属性](#4411-%E8%8E%B7%E5%8F%96%E6%96%87%E4%BB%B6%E5%B1%9E%E6%80%A7)
|
66
|
-
- [4.4.1.2 获取当前文件属性(刷新)(stat)](#4412-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E5%B1%9E%E6%80%A7%
|
67
|
-
- [4.4.1.3 更新当前文件属性(upadte)](#4413-%E6%9B%B4%E6%96%B0%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E5%B1%9E%E6%80%
|
68
|
-
- [4.4.1.4 删除当前文件(delete)](#4414-%E5%88%A0%E9%99%A4%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%
|
69
|
-
- [4.4.1.5 删除当前文件(无异常)(delete!)](#4415-%E5%88%A0%E9%99%A4%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%
|
70
|
-
- [4.4.1.6 判断当前文件是否存在(exist?,exists?)](#4416-%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%
|
71
|
-
- [4.4.1.7 判断当前文件是否上传完成(complete?)](#4417-%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E4%B8%8A%E4%BC%A0%E5%AE%8C%E6%88%
|
72
|
-
- [4.4.1.8 获取当前文件的访问URL(url)](#4418-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E7%9A%84%E8%AE%BF%E9%97%
|
73
|
-
- [4.4.1.9 下载当前文件(download)](#4419-%E4%B8%8B%E8%BD%BD%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%
|
67
|
+
- [4.4.1.2 获取当前文件属性(刷新)(stat)](#4412-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E5%B1%9E%E6%80%A7%E5%88%B7%E6%96%B0stat)
|
68
|
+
- [4.4.1.3 更新当前文件属性(upadte)](#4413-%E6%9B%B4%E6%96%B0%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E5%B1%9E%E6%80%A7upadte)
|
69
|
+
- [4.4.1.4 删除当前文件(delete)](#4414-%E5%88%A0%E9%99%A4%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6delete)
|
70
|
+
- [4.4.1.5 删除当前文件(无异常)(delete!)](#4415-%E5%88%A0%E9%99%A4%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E6%97%A0%E5%BC%82%E5%B8%B8delete)
|
71
|
+
- [4.4.1.6 判断当前文件是否存在(exist?,exists?)](#4416-%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8existexists)
|
72
|
+
- [4.4.1.7 判断当前文件是否上传完成(complete?)](#4417-%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E4%B8%8A%E4%BC%A0%E5%AE%8C%E6%88%90complete)
|
73
|
+
- [4.4.1.8 获取当前文件的访问URL(url)](#4418-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E7%9A%84%E8%AE%BF%E9%97%AEurlurl)
|
74
|
+
- [4.4.1.9 下载当前文件(download)](#4419-%E4%B8%8B%E8%BD%BD%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6download)
|
74
75
|
- [4.4.1.10 判断当前文件与本地文件是否相同](#44110-%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E6%96%87%E4%BB%B6%E4%B8%8E%E6%9C%AC%E5%9C%B0%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E7%9B%B8%E5%90%8C)
|
75
|
-
- [4.4.2 目录操作(COS::COSDir)](#442-%E7%9B%AE%E5%BD%95%E6%93%8D%E4%BD%
|
76
|
+
- [4.4.2 目录操作(COS::COSDir)](#442-%E7%9B%AE%E5%BD%95%E6%93%8D%E4%BD%9Ccoscosdir)
|
76
77
|
- [4.4.2.1 获取目录属性](#4421-%E8%8E%B7%E5%8F%96%E7%9B%AE%E5%BD%95%E5%B1%9E%E6%80%A7)
|
77
|
-
- [4.4.2.2 列举当前目录(前缀搜索)(list,ls)](#4422-%E5%88%97%E4%B8%BE%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%
|
78
|
-
- [4.4.2.3 创建子目录(create_folder,mkdir)](#4423-%E5%88%9B%E5%BB%BA%E5%AD%90%E7%9B%AE%E5%BD%
|
79
|
-
- [4.4.2.4 上传文件至当前目录(upload)](#4424-%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%E8%87%B3%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%
|
80
|
-
- [4.4.2.5 批量上传本地目录中的所有文件至当前目录(upload_all)](#4425-%E6%89%B9%E9%87%8F%E4%B8%8A%E4%BC%A0%E6%9C%AC%E5%9C%B0%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E8%87%B3%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%
|
81
|
-
- [4.4.2.6 批量下载当前目录下的所有文件(download_all)](#4426-%E6%89%B9%E9%87%8F%E4%B8%8B%E8%BD%BD%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%
|
82
|
-
- [4.4.2.7 当前目录属性(刷新)(stat)](#4427-%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E5%B1%9E%E6%80%A7%
|
83
|
-
- [4.4.2.8 更新当前目录属性(upadte)](#4428-%E6%9B%B4%E6%96%B0%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E5%B1%9E%E6%80%
|
84
|
-
- [4.4.2.9 删除当前目录(delete)](#4429-%E5%88%A0%E9%99%A4%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%
|
85
|
-
- [4.4.2.10 删除当前目录(无异常)(delete!)](#44210-%E5%88%A0%E9%99%A4%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%
|
86
|
-
- [4.4.2.11 判断当前目录是否为空(empty?)](#44211-%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%
|
87
|
-
- [4.4.2.12 判断当前目录是否存在(exist?,exists?)](#44212-%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%
|
88
|
-
- [4.4.2.13 获取当前目录下的Object树形结构(tree)](#44213-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84object%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%
|
89
|
-
- [4.4.2.14 获取当前目录下的Hash树形结构(hash_tree)](#44214-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84hash%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%
|
90
|
-
- [4.4.2.15 获取当前目录下的资源个数详情(支持前缀搜索)(list_count)](#44215-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E8%B5%84%E6%BA%90%E4%B8%AA%E6%95%B0%E8%AF%A6%E6%83%85%
|
91
|
-
- [4.4.2.16 获取当前目录下的资源个数(count, size)](#44216-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E8%B5%84%E6%BA%90%E4%B8%AA%E6%95%
|
92
|
-
- [4.4.2.17 获取当前目录下的文件个数(count_files)](#44217-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E6%96%87%E4%BB%B6%E4%B8%AA%E6%95%
|
93
|
-
- [4.4.2.18 获取当前目录下的子目录个数(count_dirs)](#44218-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AA%E6%95%
|
94
|
-
- [4.5 签名操作(COS::Signature)](#45-%E7%AD%BE%E5%90%8D%E6%93%8D%E4%BD%
|
95
|
-
- [4.5.1 获取单次有效签名(once)](#451-%E8%8E%B7%E5%8F%96%E5%8D%95%E6%AC%A1%E6%9C%89%E6%95%88%E7%AD%BE%E5%90%
|
96
|
-
- [4.5.2 获取多次有效签名(multiple)](#452-%E8%8E%B7%E5%8F%96%E5%A4%9A%E6%AC%A1%E6%9C%89%E6%95%88%E7%AD%BE%E5%90%
|
97
|
-
- [5 底层API(COS::API)](#5-%E5%BA%95%E5%B1%
|
78
|
+
- [4.4.2.2 列举当前目录(前缀搜索)(list,ls)](#4422-%E5%88%97%E4%B8%BE%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E5%89%8D%E7%BC%80%E6%90%9C%E7%B4%A2listls)
|
79
|
+
- [4.4.2.3 创建子目录(create_folder,mkdir)](#4423-%E5%88%9B%E5%BB%BA%E5%AD%90%E7%9B%AE%E5%BD%95create_folder)
|
80
|
+
- [4.4.2.4 上传文件至当前目录(upload)](#4424-%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%E8%87%B3%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95upload)
|
81
|
+
- [4.4.2.5 批量上传本地目录中的所有文件至当前目录(upload_all)](#4425-%E6%89%B9%E9%87%8F%E4%B8%8A%E4%BC%A0%E6%9C%AC%E5%9C%B0%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%E8%87%B3%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95upload_all)
|
82
|
+
- [4.4.2.6 批量下载当前目录下的所有文件(download_all)](#4426-%E6%89%B9%E9%87%8F%E4%B8%8B%E8%BD%BD%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6download_all)
|
83
|
+
- [4.4.2.7 当前目录属性(刷新)(stat)](#4427-%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E5%B1%9E%E6%80%A7%E5%88%B7%E6%96%B0stat)
|
84
|
+
- [4.4.2.8 更新当前目录属性(upadte)](#4428-%E6%9B%B4%E6%96%B0%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E5%B1%9E%E6%80%A7upadte)
|
85
|
+
- [4.4.2.9 删除当前目录(delete)](#4429-%E5%88%A0%E9%99%A4%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95delete)
|
86
|
+
- [4.4.2.10 删除当前目录(无异常)(delete!)](#44210-%E5%88%A0%E9%99%A4%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E6%97%A0%E5%BC%82%E5%B8%B8delete)
|
87
|
+
- [4.4.2.11 判断当前目录是否为空(empty?)](#44211-%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%BAempty)
|
88
|
+
- [4.4.2.12 判断当前目录是否存在(exist?,exists?)](#44212-%E5%88%A4%E6%96%AD%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8existexists)
|
89
|
+
- [4.4.2.13 获取当前目录下的Object树形结构(tree)](#44213-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84object%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%84tree)
|
90
|
+
- [4.4.2.14 获取当前目录下的Hash树形结构(hash_tree)](#44214-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84hash%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%84hash_tree)
|
91
|
+
- [4.4.2.15 获取当前目录下的资源个数详情(支持前缀搜索)(list_count)](#44215-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E8%B5%84%E6%BA%90%E4%B8%AA%E6%95%B0%E8%AF%A6%E6%83%85%E6%94%AF%E6%8C%81%E5%89%8D%E7%BC%80%E6%90%9C%E7%B4%A2list_count)
|
92
|
+
- [4.4.2.16 获取当前目录下的资源个数(count, size)](#44216-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E8%B5%84%E6%BA%90%E4%B8%AA%E6%95%B0count-size)
|
93
|
+
- [4.4.2.17 获取当前目录下的文件个数(count_files)](#44217-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E6%96%87%E4%BB%B6%E4%B8%AA%E6%95%B0count_files)
|
94
|
+
- [4.4.2.18 获取当前目录下的子目录个数(count_dirs)](#44218-%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%8B%E7%9A%84%E5%AD%90%E7%9B%AE%E5%BD%95%E4%B8%AA%E6%95%B0count_dirs)
|
95
|
+
- [4.5 签名操作(COS::Signature)](#45-%E7%AD%BE%E5%90%8D%E6%93%8D%E4%BD%9Ccossignature)
|
96
|
+
- [4.5.1 获取单次有效签名(once)](#451-%E8%8E%B7%E5%8F%96%E5%8D%95%E6%AC%A1%E6%9C%89%E6%95%88%E7%AD%BE%E5%90%8Donce)
|
97
|
+
- [4.5.2 获取多次有效签名(multiple)](#452-%E8%8E%B7%E5%8F%96%E5%A4%9A%E6%AC%A1%E6%9C%89%E6%95%88%E7%AD%BE%E5%90%8Dmultiple)
|
98
|
+
- [5 底层API(COS::API)](#5-%E5%BA%95%E5%B1%82apicosapi)
|
98
99
|
- [5.1 创建目录(create_folder)](#51-%E5%88%9B%E5%BB%BA%E7%9B%AE%E5%BD%95create_folder)
|
99
|
-
- [5.2 目录列表(前缀搜索)(list)](#52-%E7%9B%AE%E5%BD%95%E5%88%97%E8%A1%A8%
|
100
|
-
- [5.3 上传文件(完整上传)(upload)](#53-%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%
|
101
|
-
- [5.4 上传文件(分片上传)(upload_slice)](#54-%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%
|
102
|
-
- [5.5 更新文件、目录属性(update)](#55-%E6%9B%B4%E6%96%B0%E6%96%87%E4%BB%B6%
|
103
|
-
- [5.6 删除文件、目录(delete)](#56-%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%
|
100
|
+
- [5.2 目录列表(前缀搜索)(list)](#52-%E7%9B%AE%E5%BD%95%E5%88%97%E8%A1%A8%E5%89%8D%E7%BC%80%E6%90%9C%E7%B4%A2list)
|
101
|
+
- [5.3 上传文件(完整上传)(upload)](#53-%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%E5%AE%8C%E6%95%B4%E4%B8%8A%E4%BC%A0upload)
|
102
|
+
- [5.4 上传文件(分片上传)(upload_slice)](#54-%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6%E5%88%86%E7%89%87%E4%B8%8A%E4%BC%A0upload_slice)
|
103
|
+
- [5.5 更新文件、目录属性(update)](#55-%E6%9B%B4%E6%96%B0%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95%E5%B1%9E%E6%80%A7update)
|
104
|
+
- [5.6 删除文件、目录(delete)](#56-%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E7%9B%AE%E5%BD%95delete)
|
104
105
|
- [5.7 获取文件或目录属性(stat)](#57-%E8%8E%B7%E5%8F%96%E6%96%87%E4%BB%B6%E6%88%96%E7%9B%AE%E5%BD%95%E5%B1%9E%E6%80%A7stat)
|
105
106
|
- [5.8下载文件](#58%E4%B8%8B%E8%BD%BD%E6%96%87%E4%BB%B6)
|
106
107
|
- [6 CLI命令行工具](#6-cli%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7)
|
@@ -152,7 +153,7 @@ client = COS::Client.new({
|
|
152
153
|
})
|
153
154
|
```
|
154
155
|
|
155
|
-
更多初始化参数及加载方式请见:4.1 初始化与配置
|
156
|
+
更多初始化参数及加载方式请见: [4.1 初始化与配置](#41-%E5%88%9D%E5%A7%8B%E5%8C%96%E4%B8%8E%E9%85%8D%E7%BD%AE)
|
156
157
|
|
157
158
|
### 3.3 指定Bucket
|
158
159
|
|
@@ -282,7 +283,7 @@ file.delete
|
|
282
283
|
# 使用协议,默认为http,可选https
|
283
284
|
:protocol => 'https',
|
284
285
|
# 接口通讯建立连接超时秒数
|
285
|
-
:open_timeout =>
|
286
|
+
:open_timeout => 30,
|
286
287
|
# 接口通讯读取数据超时秒数
|
287
288
|
:read_timeout => 120,
|
288
289
|
# 加载配置文件路径
|
@@ -440,21 +441,21 @@ end
|
|
440
441
|
|
441
442
|
参数:
|
442
443
|
|
443
|
-
| 参数名 |
|
444
|
-
| :--------------------------- |
|
445
|
-
| path_or_dir | String
|
446
|
-
| file_name |
|
447
|
-
| file_src |
|
448
|
-
| options |
|
449
|
-
| options[:auto_create_folder] |
|
450
|
-
| options[:min_slice_size] |
|
451
|
-
| options[:upload_retry] |
|
452
|
-
| options[:biz_attr] |
|
453
|
-
| options[:disable_cpt] |
|
454
|
-
| options[:threads] |
|
455
|
-
| options[:slice_size] |
|
456
|
-
| options[:cpt_file] |
|
457
|
-
| yield |
|
444
|
+
| 参数名 | 类型 | 必须 | 默认值 | 参数描述 |
|
445
|
+
| :--------------------------- | :----------------: | :--: | :--------------: | ---------------------------------------- |
|
446
|
+
| path_or_dir | String/COS::COSDir | 否 | 空 | 目录路径或目录对象COSDir目录路径如: '/', 'path1', 'path1/path2', sdk会补齐末尾的 '/' |
|
447
|
+
| file_name | String | 是 | 无 | 存储文件名 |
|
448
|
+
| file_src | String | 是 | 无 | 本地文件路径 |
|
449
|
+
| options | Hash | 否 | 无 | |
|
450
|
+
| options[:auto_create_folder] | Boolean | 否 | false | 自动创建远端目录 |
|
451
|
+
| options[:min_slice_size] | Integer | 否 | 10 * 1024 * 1024 | 完整上传最小文件大小,超过此大小将会使用分片多线程断点续传 |
|
452
|
+
| options[:upload_retry] | Integer | 否 | 10 | 上传重试次数 |
|
453
|
+
| options[:biz_attr] | String | 否 | 无 | 业务属性 |
|
454
|
+
| options[:disable_cpt] | Boolean | 否 | false | 是否禁用checkpoint,如禁用仍可通过服务端进行断点续传 |
|
455
|
+
| options[:threads] | Integer | 否 | 10 | 多线程上传线程数 |
|
456
|
+
| options[:slice_size] | Integer | 否 | 3 * 1024 * 1024 | 设置分片上传时每个分片的大小。默认为3 MB, 目前服务端最大限制也为3MB。 |
|
457
|
+
| options[:cpt_file] | String | 否 | 无 | 断点续传的checkpoint文件 |
|
458
|
+
| yield | Float | 否 | 无 | 上传进度百分比回调, 进度值是一个0-1之间的小数 |
|
458
459
|
|
459
460
|
注:SDK会自动使用分片断点续传上传大文件。
|
460
461
|
|
@@ -658,13 +659,13 @@ puts @bucket.complete?('path/file1')
|
|
658
659
|
|
659
660
|
参数:
|
660
661
|
|
661
|
-
| 参数名 |
|
662
|
-
| :----------------------- |
|
663
|
-
| path_or_file | String
|
664
|
-
| options |
|
665
|
-
| options[:cname] |
|
666
|
-
| options[:https] |
|
667
|
-
| options[:expire_seconds] |
|
662
|
+
| 参数名 | 类型 | 必须 | 默认值 | 参数描述 |
|
663
|
+
| :----------------------- | :-----------------: | :--: | :---: | ------------------------------- |
|
664
|
+
| path_or_file | String/COS::COSFile | 否 | 空 | 文件资源COSFile或路径, 如: 'path1/file' |
|
665
|
+
| options | Hash | | | |
|
666
|
+
| options[:cname] | String | 否 | 无 | 获取使用cname的url。在cos控制台设置的cname域名 |
|
667
|
+
| options[:https] | Boolean | 否 | false | 是否获取https的url |
|
668
|
+
| options[:expire_seconds] | Integer | 否 | 600 | 签名有效时间(秒,私有读取bucket时需要) |
|
668
669
|
|
669
670
|
返回:
|
670
671
|
|
@@ -686,16 +687,17 @@ puts bucket.url('path1/file1', https: true, cname: 'static.domain.com')
|
|
686
687
|
|
687
688
|
参数:
|
688
689
|
|
689
|
-
| 参数名 |
|
690
|
-
| :----------------------- |
|
691
|
-
| path_or_file | String
|
692
|
-
| file_store |
|
693
|
-
| options |
|
694
|
-
| options[:disable_mkdir] |
|
695
|
-
| options[:min_slice_size] |
|
696
|
-
| options[:
|
697
|
-
| options[:
|
698
|
-
|
|
690
|
+
| 参数名 | 类型 | 必须 | 默认值 | 参数描述 |
|
691
|
+
| :----------------------- | :-----------------: | :--: | :-----------: | ------------------------------- |
|
692
|
+
| path_or_file | String/COS::COSFile | 是 | 无 | 文件资源COSFile或路径, 如: 'path1/file' |
|
693
|
+
| file_store | String | 是 | 无 | 本地文件存储路径 |
|
694
|
+
| options | Hash | 否 | 无 | |
|
695
|
+
| options[:disable_mkdir] | Boolean | 否 | true | 禁止自动创建本地文件夹, 默认会创建 |
|
696
|
+
| options[:min_slice_size] | Integer | 否 | 5 * 10 * 1024 | 完整下载最小文件大小,超过此大小将会使用分片多线程断点续传 |
|
697
|
+
| options[:part_size] | Integer | 否 | 5 * 10 * 1024 | 分片下载大小,如多线程下载时使用该大小分片下载 |
|
698
|
+
| options[:download_retry] | Integer | 否 | 10 | 下载重试次数 |
|
699
|
+
| options[:disable_cpt] | Boolean | 否 | false | 是否禁用checkpoint,如果禁用则不使用断点续传 |
|
700
|
+
| yield | Float | 否 | 无 | 下载进度百分比回调, 进度值是一个0-1之间的小数 |
|
699
701
|
|
700
702
|
注:支持私有访问资源下载,SDK会自动携带鉴权签名。SDK会自动使用分片断点续传下载大文件。
|
701
703
|
|
@@ -724,11 +726,12 @@ puts file
|
|
724
726
|
|
725
727
|
参数:
|
726
728
|
|
727
|
-
| 参数名 |
|
728
|
-
| :-------------- |
|
729
|
-
| path_or_dir | String
|
730
|
-
| options |
|
731
|
-
| options[:depth] |
|
729
|
+
| 参数名 | 类型 | 必须 | 默认值 | 参数描述 |
|
730
|
+
| :-------------- | :----------------: | :--: | :--: | ---------------------------------------- |
|
731
|
+
| path_or_dir | String/COS::COSDir | 否 | 空 | 目录路径或目录对象COSDir目录路径如: '/', 'path1', 'path1/path2', sdk会补齐末尾的 '/' |
|
732
|
+
| options | Hash | | | |
|
733
|
+
| options[:depth] | Integer | 否 | 5 | 子目录深度,默认为5 |
|
734
|
+
| options[:files] | Boolean | 否 | false | 同时列出文件,默认不列出 |
|
732
735
|
|
733
736
|
返回:
|
734
737
|
|
@@ -761,11 +764,12 @@ end
|
|
761
764
|
|
762
765
|
参数:
|
763
766
|
|
764
|
-
| 参数名 |
|
765
|
-
| :-------------- |
|
766
|
-
| path_or_dir | String
|
767
|
-
| options |
|
768
|
-
| options[:depth] |
|
767
|
+
| 参数名 | 类型 | 必须 | 默认值 | 参数描述 |
|
768
|
+
| :-------------- | :----------------: | :--: | :--: | ---------------------------------------- |
|
769
|
+
| path_or_dir | String/COS::COSDir | 否 | 空 | 目录路径或目录对象COSDir目录路径如: '/', 'path1', 'path1/path2', sdk会补齐末尾的 '/' |
|
770
|
+
| options | Hash | | | |
|
771
|
+
| options[:depth] | Integer | 否 | 5 | 子目录深度,默认为5 |
|
772
|
+
| options[:files] | Boolean | 否 | false | 同时列出文件,默认不列出 |
|
769
773
|
|
770
774
|
返回:
|
771
775
|
|
@@ -799,16 +803,16 @@ puts tree.to_json # 可直接转为json
|
|
799
803
|
|
800
804
|
参数:
|
801
805
|
|
802
|
-
| 参数名 |
|
803
|
-
| :----------------------- |
|
804
|
-
| path_or_dir | String
|
805
|
-
| file_store_path |
|
806
|
-
| options |
|
807
|
-
| options[:disable_mkdir] |
|
808
|
-
| options[:min_slice_size] |
|
809
|
-
| options[:download_retry] |
|
810
|
-
| options[:disable_cpt] |
|
811
|
-
| yield |
|
806
|
+
| 参数名 | 类型 | 必须 | 默认值 | 参数描述 |
|
807
|
+
| :----------------------- | :----------------: | :--: | :-----------: | ---------------------------------------- |
|
808
|
+
| path_or_dir | String/COS::COSDir | 否 | 空 | 目录路径或目录对象COSDir目录路径如: '/', 'path1', 'path1/path2', sdk会补齐末尾的 '/' |
|
809
|
+
| file_store_path | String | 是 | 无 | 本地文件存储目录 |
|
810
|
+
| options | Hash | 否 | 无 | |
|
811
|
+
| options[:disable_mkdir] | Boolean | 否 | true | 禁止自动创建本地文件夹, 默认会创建 |
|
812
|
+
| options[:min_slice_size] | Integer | 否 | 5 * 10 * 1024 | 完整下载最小文件大小,超过此大小将会使用分片多线程断点续传 |
|
813
|
+
| options[:download_retry] | Integer | 否 | 10 | 下载重试次数 |
|
814
|
+
| options[:disable_cpt] | Boolean | 否 | false | 是否禁用checkpoint,如果禁用则不使用断点续传 |
|
815
|
+
| yield | Float | 否 | 无 | 下载进度百分比回调, 进度值是一个0-1之间的小数 |
|
812
816
|
|
813
817
|
注:不包含子目录。支持私有访问资源下载,SDK会自动携带鉴权签名。SDK会自动使用分片断点续传下载大文件。
|
814
818
|
|
@@ -835,21 +839,21 @@ puts files
|
|
835
839
|
|
836
840
|
参数:
|
837
841
|
|
838
|
-
| 参数名 |
|
839
|
-
| :--------------------------- |
|
840
|
-
| path_or_dir | String
|
841
|
-
| file_src_path |
|
842
|
-
| options |
|
843
|
-
| options[:skip_error] |
|
844
|
-
| options[:auto_create_folder] |
|
845
|
-
| options[:min_slice_size] |
|
846
|
-
| options[:upload_retry] |
|
847
|
-
| options[:biz_attr] |
|
848
|
-
| options[:disable_cpt] |
|
849
|
-
| options[:threads] |
|
850
|
-
| options[:slice_size] |
|
851
|
-
| options[:cpt_file] |
|
852
|
-
| yield |
|
842
|
+
| 参数名 | 类型 | 必须 | 默认值 | 参数描述 |
|
843
|
+
| :--------------------------- | :----------------: | :--: | :--------------: | ---------------------------------------- |
|
844
|
+
| path_or_dir | String/COS::COSDir | 否 | 空 | 目录路径或目录对象COSDir目录路径如: '/', 'path1', 'path1/path2', sdk会补齐末尾的 '/' |
|
845
|
+
| file_src_path | String | 是 | 无 | 本地文件夹路径 |
|
846
|
+
| options | Hash | 否 | 无 | |
|
847
|
+
| options[:skip_error] | Boolean | 否 | false | 是否跳过错误仍继续上传下一个文件 |
|
848
|
+
| options[:auto_create_folder] | Boolean | 否 | false | 自动创建远端目录 |
|
849
|
+
| options[:min_slice_size] | Integer | 否 | 10 * 1024 * 1024 | 完整上传最小文件大小,超过此大小将会使用分片多线程断点续传 |
|
850
|
+
| options[:upload_retry] | Integer | 否 | 10 | 上传重试次数 |
|
851
|
+
| options[:biz_attr] | String | 否 | 无 | 业务属性 |
|
852
|
+
| options[:disable_cpt] | Boolean | 否 | false | 是否禁用checkpoint,如禁用仍可通过服务端进行断点续传 |
|
853
|
+
| options[:threads] | Integer | 否 | 10 | 多线程上传线程数 |
|
854
|
+
| options[:slice_size] | Integer | 否 | 3 * 1024 * 1024 | 设置分片上传时每个分片的大小。默认为3 MB, 目前服务端最大限制也为3MB。 |
|
855
|
+
| options[:cpt_file] | String | 否 | 无 | 断点续传的checkpoint文件 |
|
856
|
+
| yield | Float | 否 | 无 | 上传进度百分比回调, 进度值是一个0-1之间的小数 |
|
853
857
|
|
854
858
|
注:不包含子目录。SDK会自动使用分片断点续传上传大文件。
|
855
859
|
|
@@ -2022,6 +2026,7 @@ $ cos upload path/path2 file1 ~/file1
|
|
2022
2026
|
|
2023
2027
|
## 7 运行测试
|
2024
2028
|
|
2029
|
+
### 7.1 单元测试
|
2025
2030
|
```
|
2026
2031
|
rspec
|
2027
2032
|
```
|
@@ -2030,4 +2035,14 @@ rspec
|
|
2030
2035
|
|
2031
2036
|
```
|
2032
2037
|
bundle exec rake spec
|
2038
|
+
```
|
2039
|
+
|
2040
|
+
### 7.2 集成测试
|
2041
|
+
先安装memory_profiler
|
2042
|
+
```
|
2043
|
+
gem install memory_profiler
|
2044
|
+
```
|
2045
|
+
|
2046
|
+
```
|
2047
|
+
bundle exec rake test
|
2033
2048
|
```
|
data/bin/cos
CHANGED
@@ -115,12 +115,12 @@ class COS_CLI < Thor
|
|
115
115
|
method_option :disable_cpt, aliases: '-d', desc: '禁用断点续传(分片下载时有效)', type: :boolean, default: false
|
116
116
|
method_option :threads, aliases: '-t', desc: '线程数(分片下载时有效)', type: :numeric
|
117
117
|
method_option :download_retry, aliases: '-n', desc: '重试次数(分片下载时有效)', type: :numeric
|
118
|
-
method_option :
|
118
|
+
method_option :part_size, aliases: '-s', desc: '分片下载时每个分片的大小(分片下载时有效)', type: :numeric
|
119
119
|
method_option :cpt_file, aliases: '-e', desc: '指定断点续传记录(分片下载时有效)'
|
120
120
|
def download(path, file_store)
|
121
121
|
rescue_errors do
|
122
122
|
file = bucket.download(path, file_store,
|
123
|
-
enabled_options([:min_slice_size, :disable_cpt, :threads, :download_retry, :
|
123
|
+
enabled_options([:min_slice_size, :disable_cpt, :threads, :download_retry, :part_size, :cpt_file])) do |percent|
|
124
124
|
puts("下载进度: #{(percent*100).round(2)}%", :green)
|
125
125
|
end
|
126
126
|
puts(file, :blue)
|
@@ -134,12 +134,12 @@ class COS_CLI < Thor
|
|
134
134
|
method_option :disable_cpt, aliases: '-d', desc: '禁用断点续传(分片下载时有效)', type: :boolean, default: false
|
135
135
|
method_option :threads, aliases: '-t', desc: '线程数(分片下载时有效)', type: :numeric
|
136
136
|
method_option :download_retry, aliases: '-n', desc: '重试次数(分片下载时有效)', type: :numeric
|
137
|
-
method_option :
|
137
|
+
method_option :part_size, aliases: '-s', desc: '分片下载时每个分片的大小(分片下载时有效)', type: :numeric
|
138
138
|
method_option :cpt_file, aliases: '-e', desc: '指定断点续传记录(分片下载时有效)'
|
139
139
|
def download_all(path, file_store_path)
|
140
140
|
rescue_errors do
|
141
141
|
files = bucket.download_all(path, file_store_path,
|
142
|
-
enabled_options([:min_slice_size, :disable_mkdir, :disable_cpt, :threads, :download_retry, :
|
142
|
+
enabled_options([:min_slice_size, :disable_mkdir, :disable_cpt, :threads, :download_retry, :part_size, :cpt_file])) do |percent|
|
143
143
|
puts("下载进度: #{(percent*100).round(2)}%", :green)
|
144
144
|
end
|
145
145
|
|
data/lib/cos/bucket.rb
CHANGED
@@ -213,6 +213,10 @@ module COS
|
|
213
213
|
min_size = options[:min_slice_size] || MIN_UPLOAD_SLICE_SIZE
|
214
214
|
retry_times = options[:upload_retry] || DEFAULT_UPLOAD_RETRY
|
215
215
|
|
216
|
+
if min_size > 20 * 1024 * 1024
|
217
|
+
raise EntireUploadTooLarge, 'entire upload file too large, file size must < 20MB'
|
218
|
+
end
|
219
|
+
|
216
220
|
options.merge!({bucket: bucket_name})
|
217
221
|
file_src = File.expand_path(file_src)
|
218
222
|
file_size = File.size(file_src)
|
@@ -272,7 +276,7 @@ module COS
|
|
272
276
|
# puts file.url
|
273
277
|
# end
|
274
278
|
def upload_all(path_or_dir, file_src_path, options = {}, &block)
|
275
|
-
local_path = Util.get_local_path(file_src_path,
|
279
|
+
local_path = Util.get_local_path(file_src_path, true)
|
276
280
|
uploaded = []
|
277
281
|
|
278
282
|
Dir.foreach(local_path) do |file|
|
data/lib/cos/download.rb
CHANGED
data/lib/cos/exception.rb
CHANGED
data/lib/cos/file.rb
CHANGED
@@ -20,7 +20,8 @@ module COS
|
|
20
20
|
# @option attrs [String] :filesize 文件存储大小
|
21
21
|
# @option attrs [String] :filelen 文件大小
|
22
22
|
# @option attrs [String] :sha 文件sha1值
|
23
|
-
# @option attrs [String] :access_url
|
23
|
+
# @option attrs [String] :access_url 文件CDN访问地址
|
24
|
+
# @option attrs [String] :source_url 文件外网访问地址
|
24
25
|
#
|
25
26
|
# @raise [AttrError] 缺少参数
|
26
27
|
#
|
data/lib/cos/http.rb
CHANGED
data/lib/cos/resource.rb
CHANGED
@@ -79,6 +79,7 @@ module COS
|
|
79
79
|
|
80
80
|
required_attrs :bucket, :path, :name, :ctime, :mtime
|
81
81
|
optional_attrs :biz_attr, :filesize, :filelen, :sha, :access_url,
|
82
|
+
:source_url,
|
82
83
|
# 根目录(bucket)参数
|
83
84
|
:authority, :bucket_type, :migrate_source_domain,
|
84
85
|
:need_preview, :refers, :blackrefers, :brower_exec,
|
data/lib/cos/slice.rb
CHANGED
@@ -38,27 +38,35 @@ module COS
|
|
38
38
|
# 未完成的片段
|
39
39
|
@todo_parts = @parts.reject { |p| p[:done] }
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
41
|
+
# 多线程上传
|
42
|
+
Thread.abort_on_exception = true
|
43
|
+
|
44
|
+
threads = []
|
45
|
+
@num_threads.times do
|
46
|
+
threads << Thread.new do
|
47
|
+
loop do
|
48
|
+
# 获取下一个未上传的片段
|
49
|
+
p = sync_get_todo_part
|
50
|
+
break unless p
|
51
|
+
|
52
|
+
# 上传片段
|
53
|
+
upload_part(p)
|
53
54
|
end
|
54
|
-
end
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
threads.each do |thread|
|
59
|
+
begin
|
60
|
+
thread.join
|
61
|
+
rescue => error
|
62
|
+
unless finish?
|
63
|
+
# 部分服务端异常需要重新初始化, 可能上传已经完成了
|
64
|
+
if error.is_a?(ServerError) and error.error_code == -288
|
65
|
+
File.delete(cpt_file) unless options[:disable_cpt]
|
66
|
+
end
|
67
|
+
threads.each {|t| t.exit}
|
68
|
+
raise error
|
60
69
|
end
|
61
|
-
raise error
|
62
70
|
end
|
63
71
|
end
|
64
72
|
|
data/lib/cos/version.rb
CHANGED
metadata
CHANGED
@@ -1,125 +1,125 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RaymondChou
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.8'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.8'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: thor
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0.19'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0.19'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.10'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.10'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '10.4'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '10.4'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '3.3'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3.3'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: webmock
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '1.22'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '1.22'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: simplecov
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - ~>
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '0.10'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- -
|
108
|
+
- - ~>
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '0.10'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: minitest
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- -
|
115
|
+
- - ~>
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: '5.8'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- -
|
122
|
+
- - ~>
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '5.8'
|
125
125
|
description: Tencent Cloud Object Service Ruby SDK.
|
@@ -130,9 +130,9 @@ executables:
|
|
130
130
|
extensions: []
|
131
131
|
extra_rdoc_files: []
|
132
132
|
files:
|
133
|
-
-
|
134
|
-
-
|
135
|
-
-
|
133
|
+
- .gitignore
|
134
|
+
- .rspec
|
135
|
+
- .travis.yml
|
136
136
|
- Gemfile
|
137
137
|
- LICENSE
|
138
138
|
- README.md
|
@@ -182,17 +182,17 @@ require_paths:
|
|
182
182
|
- lib
|
183
183
|
required_ruby_version: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- -
|
185
|
+
- - '>='
|
186
186
|
- !ruby/object:Gem::Version
|
187
187
|
version: 1.9.3
|
188
188
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
189
|
requirements:
|
190
|
-
- -
|
190
|
+
- - '>='
|
191
191
|
- !ruby/object:Gem::Version
|
192
192
|
version: '0'
|
193
193
|
requirements: []
|
194
194
|
rubyforge_project:
|
195
|
-
rubygems_version: 2.
|
195
|
+
rubygems_version: 2.0.14
|
196
196
|
signing_key:
|
197
197
|
specification_version: 4
|
198
198
|
summary: Tencent COS Ruby SDK.
|