upyun-sdk 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|