upyun-sdk 0.1.2 → 0.1.3
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/.rspec +2 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +26 -0
- data/LICENSE +9 -18
- data/README.md +5 -4
- data/lib/upyun/version.rb +1 -1
- data/lib/upyun-sdk.rb +25 -31
- data/spec/spec_helper.rb +8 -0
- data/spec/up_spec.rb +60 -0
- data/upyun-sdk.gemspec +1 -1
- metadata +16 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4dbfcc73c74693148e1bc9c89ba60cecd5e36929
|
4
|
+
data.tar.gz: 6d242487be12d316c812dafa5930f94685f1ebdc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 143e2bbb87aff0d49cf64021ce7974739d25d3dd1aa5ca70517af731fb758b7d34fbb9fcc84d71d83a8f890a218a23434aa4b31a4ae6eaea53ddf2aa8241c11d
|
7
|
+
data.tar.gz: b157b659b247e34f0d6daf7040321f907d4424791c87379c888e068d94520dbc3ce8631161ff2e14bc25f036a9765ed0eca6d0060b34dcb1c99e294db43fdbb8
|
data/.rspec
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
upyun-sdk (0.1.3)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
diff-lcs (1.2.5)
|
10
|
+
rake (10.1.0)
|
11
|
+
rspec (2.14.1)
|
12
|
+
rspec-core (~> 2.14.0)
|
13
|
+
rspec-expectations (~> 2.14.0)
|
14
|
+
rspec-mocks (~> 2.14.0)
|
15
|
+
rspec-core (2.14.7)
|
16
|
+
rspec-expectations (2.14.4)
|
17
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
18
|
+
rspec-mocks (2.14.4)
|
19
|
+
|
20
|
+
PLATFORMS
|
21
|
+
ruby
|
22
|
+
|
23
|
+
DEPENDENCIES
|
24
|
+
rake
|
25
|
+
rspec
|
26
|
+
upyun-sdk!
|
data/LICENSE
CHANGED
@@ -1,22 +1,13 @@
|
|
1
|
-
|
1
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
2
|
+
Version 2, December 2004
|
2
3
|
|
3
|
-
|
4
|
+
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
-
permit persons to whom the Software is furnished to do so, subject to
|
11
|
-
the following conditions:
|
6
|
+
Everyone is permitted to copy and distribute verbatim or modified
|
7
|
+
copies of this license document, and changing it is allowed as long
|
8
|
+
as the name is changed.
|
12
9
|
|
13
|
-
|
14
|
-
|
10
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
11
|
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
15
12
|
|
16
|
-
|
17
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
-
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
-
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
-
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
13
|
+
0. You just DO WHAT THE FUCK YOU WANT TO.
|
data/README.md
CHANGED
@@ -46,7 +46,7 @@ up.endpoint = 1
|
|
46
46
|
up.put('/upyun-sdk/ascii.txt', 'abcdefghijklmnopqrstuvwxyz\n')
|
47
47
|
````
|
48
48
|
|
49
|
-
其中,参数 `auto_mkdir` 默认为 true
|
49
|
+
其中,参数 `auto_mkdir` 默认为 true,表示自动创建目录; `checksum`,默认 False,表示不进行 MD5 校验; `headers` ,可根据需求设置自定义 HTTP Header,例如作图参数 x-gmkerl-*, 具体请参考 [标准 API 上传文件](http://wiki.upyun.com/index.php?title=%E6%A0%87%E5%87%86API%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6) 。
|
50
50
|
|
51
51
|
上传成功,返回 true; 失败返回错误信息。
|
52
52
|
|
@@ -85,7 +85,7 @@ up.delete('/upyun-sdk/temp/')
|
|
85
85
|
````
|
86
86
|
|
87
87
|
注意删除目录时,必须保证目录为空。
|
88
|
-
删除成功,返回 true;
|
88
|
+
删除成功,返回 true; 失败则返回错误信息。
|
89
89
|
|
90
90
|
### 获取目录文件列表
|
91
91
|
|
@@ -94,7 +94,7 @@ res = up.getlist('/upyun-sdk/')
|
|
94
94
|
````
|
95
95
|
|
96
96
|
该方法默认获取根目录列表信息。
|
97
|
-
|
97
|
+
获取成功,返回一个包含该目录下所有目录或文件条目信息的数组; 失败则返回错误信息。
|
98
98
|
|
99
99
|
|
100
100
|
### 获取空间使用情况
|
@@ -112,4 +112,5 @@ res = up.usage()
|
|
112
112
|
|
113
113
|
## Thanks
|
114
114
|
|
115
|
-
[gccyugi](https://github.com/gccyugi)
|
115
|
+
[gccyugi](https://github.com/gccyugi)
|
116
|
+
[megayu](https://github.com/megayu)
|
data/lib/upyun/version.rb
CHANGED
data/lib/upyun-sdk.rb
CHANGED
@@ -11,11 +11,11 @@ class UpYun
|
|
11
11
|
attr_accessor :bucket, :username, :password
|
12
12
|
attr_reader :endpoint
|
13
13
|
|
14
|
-
def initialize(bucket, username, password, endpoint=
|
14
|
+
def initialize(bucket, username, password, endpoint=0)
|
15
15
|
@bucket = bucket
|
16
16
|
@username = username
|
17
17
|
@password = password
|
18
|
-
self.endpoint = endpoint
|
18
|
+
self.endpoint = endpoint
|
19
19
|
end
|
20
20
|
|
21
21
|
# public API
|
@@ -25,32 +25,34 @@ class UpYun
|
|
25
25
|
end
|
26
26
|
|
27
27
|
# 上传文件
|
28
|
-
def put(path, data, auto_mkdir=true, checksum=nil,
|
29
|
-
headers =
|
28
|
+
def put(path, data, auto_mkdir=true, checksum=nil, options={})
|
29
|
+
headers = {}
|
30
30
|
headers['mkdir'] = auto_mkdir.to_s
|
31
31
|
headers['Content-MD5'] = checksum if checksum
|
32
32
|
headers['Content-Length'] = data.size.to_s
|
33
|
+
headers.merge(options)
|
33
34
|
res = http_request('PUT', path, data, headers)
|
34
|
-
|
35
|
+
res_msg(res)
|
35
36
|
end
|
36
37
|
|
37
38
|
# 下载文件
|
38
39
|
def get(path)
|
39
40
|
res = http_request('GET', path)
|
40
|
-
|
41
|
+
res_msg(res, res.body)
|
41
42
|
end
|
42
43
|
|
43
44
|
# 获取文件信息
|
44
45
|
def getinfo(path)
|
45
46
|
res = http_request('HEAD', path)
|
46
|
-
if
|
47
|
-
|
47
|
+
if res.code.eql? '200'
|
48
|
+
{
|
48
49
|
:file_type => res['x-upyun-file-type'],
|
49
50
|
:file_size => res['x-upyun-file-size'],
|
50
51
|
:file_date => res['x-upyun-file-date']
|
51
52
|
}
|
53
|
+
else
|
54
|
+
errmsg(res)
|
52
55
|
end
|
53
|
-
res_errmsg(res)
|
54
56
|
end
|
55
57
|
|
56
58
|
# 创建目录
|
@@ -58,55 +60,47 @@ class UpYun
|
|
58
60
|
headers = {'folder' => 'true'}
|
59
61
|
headers['mkdir'] = auto_mkdir.to_s
|
60
62
|
res = http_request('POST', path, nil, headers)
|
61
|
-
|
63
|
+
res_msg(res)
|
62
64
|
end
|
63
65
|
|
64
66
|
# 删除目录或文件
|
65
67
|
def delete(path)
|
66
68
|
res = http_request('DELETE', path)
|
67
|
-
|
69
|
+
res_msg(res)
|
68
70
|
end
|
69
71
|
|
70
72
|
# 获取目录文件列表
|
71
73
|
def getlist(path='/')
|
72
74
|
res = http_request('GET', path)
|
73
|
-
if
|
74
|
-
|
75
|
-
name, type, size, time
|
76
|
-
{
|
77
|
-
:name => name,
|
78
|
-
:type => type,
|
79
|
-
:size => size,
|
80
|
-
:time => time
|
81
|
-
}
|
75
|
+
if res.code.eql? '200'
|
76
|
+
res.body.split("\n").map do |file|
|
77
|
+
Hash[[:name, :type, :size, :time].zip(file.split("\t"))]
|
82
78
|
end
|
83
|
-
|
79
|
+
else
|
80
|
+
errmsg(res)
|
84
81
|
end
|
85
|
-
res_errmsg(res)
|
86
82
|
end
|
87
83
|
|
88
84
|
# 获取空间使用情况
|
89
85
|
def usage(path='/')
|
90
86
|
res = http_request('GET', "#{path}?usage")
|
91
|
-
|
87
|
+
res_msg(res, res.body)
|
92
88
|
end
|
93
89
|
|
94
90
|
private
|
95
91
|
|
96
|
-
def
|
97
|
-
res.code.eql? '200'
|
92
|
+
def res_msg(res, msg=true)
|
93
|
+
(res.code.eql? '200') ? msg : errmsg(res)
|
98
94
|
end
|
99
95
|
|
100
|
-
def
|
101
|
-
|
96
|
+
def errmsg(res)
|
97
|
+
{ :code => res.code, :message => res.message }
|
102
98
|
end
|
103
99
|
|
104
|
-
def http_request(method, path, data=nil, headers=
|
105
|
-
|
106
|
-
url = File.join(base, path)
|
100
|
+
def http_request(method, path, data=nil, headers={})
|
101
|
+
url = "http://#{@endpoint}/#{@bucket}#{path}"
|
107
102
|
uri = URI.parse(URI.encode(url))
|
108
103
|
|
109
|
-
headers = headers || {}
|
110
104
|
date = Time.now.utc.strftime('%a, %d %b %Y %H:%M:%S GMT')
|
111
105
|
length = headers['Content-Length'] || 0
|
112
106
|
headers['Date'] = date
|
data/spec/spec_helper.rb
ADDED
data/spec/up_spec.rb
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/spec_helper'
|
2
|
+
|
3
|
+
describe 'Up' do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
# @up = UpYun.new('bucket', 'username', 'password', 0)
|
7
|
+
@up = UpYun.new('redmine', 'woohoo', 'MH2RqEFgfoEi', 0)
|
8
|
+
end
|
9
|
+
|
10
|
+
f = 'abcdefghijklmnopqrstuvwxyz\n'
|
11
|
+
dir = '/upyun-sdk'
|
12
|
+
|
13
|
+
context 'put file' do
|
14
|
+
it 'does put file' do
|
15
|
+
@up.put("#{dir}/ascii.txt", f).should be_true
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'get file' do
|
20
|
+
it 'does get file' do
|
21
|
+
@up.get("#{dir}/ascii.txt").size.should == f.size
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
context 'getinfo' do
|
26
|
+
it 'do get file info' do
|
27
|
+
@up.getinfo("#{dir}/ascii.txt")[:file_size].to_i.should == f.size
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'getlist' do
|
32
|
+
it 'do get directory list' do
|
33
|
+
@up.getlist("#{dir}")[0][:size].to_i.should == f.size
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'usage' do
|
38
|
+
it 'do get directory usage' do
|
39
|
+
@up.usage("#{dir}").to_i.should == f.size
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context 'mkdir' do
|
44
|
+
it 'do create directory' do
|
45
|
+
@up.mkdir("#{dir}/temp/").should be_true
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'delete dir' do
|
50
|
+
it 'do delete directory' do
|
51
|
+
@up.delete("#{dir}/temp/").should be_true
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
context 'delete file' do
|
56
|
+
it 'do delete file' do
|
57
|
+
@up.delete("#{dir}/ascii.txt").should be_true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
data/upyun-sdk.gemspec
CHANGED
@@ -18,6 +18,6 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_development_dependency "bundler", "~> 1.3"
|
22
21
|
spec.add_development_dependency "rake"
|
22
|
+
spec.add_development_dependency "rspec"
|
23
23
|
end
|
metadata
CHANGED
@@ -1,31 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: upyun-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- woo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '>='
|
@@ -46,11 +46,16 @@ extensions: []
|
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
48
|
- .gitignore
|
49
|
+
- .rspec
|
50
|
+
- Gemfile
|
51
|
+
- Gemfile.lock
|
49
52
|
- LICENSE
|
50
53
|
- README.md
|
51
54
|
- Rakefile
|
52
55
|
- lib/upyun-sdk.rb
|
53
56
|
- lib/upyun/version.rb
|
57
|
+
- spec/spec_helper.rb
|
58
|
+
- spec/up_spec.rb
|
54
59
|
- upyun-sdk.gemspec
|
55
60
|
homepage: https://github.com/klwoohoo/upyun-sdk
|
56
61
|
licenses:
|
@@ -76,4 +81,6 @@ rubygems_version: 2.0.6
|
|
76
81
|
signing_key:
|
77
82
|
specification_version: 4
|
78
83
|
summary: Upyun SDK for Ruby.
|
79
|
-
test_files:
|
84
|
+
test_files:
|
85
|
+
- spec/spec_helper.rb
|
86
|
+
- spec/up_spec.rb
|