qiniu_jxb 6.2.4
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.
- data/.gitignore +18 -0
- data/.rspec +1 -0
- data/.travis.yml +9 -0
- data/CHANGELOG.md +118 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +37 -0
- data/LICENSE +22 -0
- data/README.md +47 -0
- data/Rakefile +21 -0
- data/docs/README.md +790 -0
- data/lib/qiniu-rs.rb +2 -0
- data/lib/qiniu.rb +209 -0
- data/lib/qiniu/abstract.rb +22 -0
- data/lib/qiniu/adt.rb +46 -0
- data/lib/qiniu/auth.rb +234 -0
- data/lib/qiniu/config.rb +58 -0
- data/lib/qiniu/exceptions.rb +120 -0
- data/lib/qiniu/fop.rb +4 -0
- data/lib/qiniu/http.rb +137 -0
- data/lib/qiniu/image.rb +38 -0
- data/lib/qiniu/log.rb +15 -0
- data/lib/qiniu/management.rb +128 -0
- data/lib/qiniu/misc.rb +33 -0
- data/lib/qiniu/pfop.rb +124 -0
- data/lib/qiniu/resumable_upload.rb +319 -0
- data/lib/qiniu/storage.rb +5 -0
- data/lib/qiniu/tokens/access_token.rb +21 -0
- data/lib/qiniu/tokens/download_token.rb +31 -0
- data/lib/qiniu/tokens/qbox_token.rb +38 -0
- data/lib/qiniu/tokens/upload_token.rb +47 -0
- data/lib/qiniu/upload.rb +138 -0
- data/lib/qiniu/utils.rb +109 -0
- data/lib/qiniu/version.rb +17 -0
- data/qiniu.gemspec +29 -0
- data/spec/qiniu/abstract_spec.rb +30 -0
- data/spec/qiniu/auth_spec.rb +81 -0
- data/spec/qiniu/image_logo_for_test.png +0 -0
- data/spec/qiniu/image_spec.rb +89 -0
- data/spec/qiniu/management_spec.rb +156 -0
- data/spec/qiniu/misc_spec.rb +59 -0
- data/spec/qiniu/pfop_spec.rb +89 -0
- data/spec/qiniu/qiniu_spec.rb +329 -0
- data/spec/qiniu/tokens/qbox_token_spec.rb +29 -0
- data/spec/qiniu/upload_spec.rb +308 -0
- data/spec/qiniu/utils_spec.rb +49 -0
- data/spec/qiniu/version_spec.rb +10 -0
- data/spec/spec_helper.rb +19 -0
- metadata +220 -0
@@ -0,0 +1,30 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'qiniu/abstract'
|
5
|
+
|
6
|
+
describe Qiniu::Abstract do
|
7
|
+
before(:each) do
|
8
|
+
@klass = Class.new do
|
9
|
+
include Qiniu::Abstract
|
10
|
+
|
11
|
+
abstract_methods :foo, :bar
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
it "raises NotImplementedError" do
|
16
|
+
proc {
|
17
|
+
@klass.new.foo
|
18
|
+
}.should raise_error(NotImplementedError)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "can be overridden" do
|
22
|
+
subclass = Class.new(@klass) do
|
23
|
+
def foo
|
24
|
+
:overridden
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
subclass.new.foo.should == :overridden
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# vim: sw=2 ts=2
|
3
|
+
|
4
|
+
require 'spec_helper'
|
5
|
+
require 'qiniu/auth'
|
6
|
+
require 'qiniu/storage'
|
7
|
+
require 'digest/sha1'
|
8
|
+
|
9
|
+
module Qiniu
|
10
|
+
module Auth
|
11
|
+
describe Auth do
|
12
|
+
|
13
|
+
before :all do
|
14
|
+
@bucket = 'RubySDK-Test-Private'
|
15
|
+
@bucket = make_unique_bucket(@bucket)
|
16
|
+
|
17
|
+
### 尝试创建Bucket
|
18
|
+
result = Qiniu::Storage.make_a_private_bucket(@bucket)
|
19
|
+
puts result.inspect
|
20
|
+
end
|
21
|
+
|
22
|
+
after :all do
|
23
|
+
### 不删除Bucket以备下次使用
|
24
|
+
end
|
25
|
+
|
26
|
+
### 测试私有资源下载
|
27
|
+
context ".download_private_file" do
|
28
|
+
it "should works" do
|
29
|
+
### 生成Key
|
30
|
+
key = 'a_private_file'
|
31
|
+
key = make_unique_key_in_bucket(key)
|
32
|
+
puts "key=#{key}"
|
33
|
+
|
34
|
+
### 上传测试文件
|
35
|
+
pp = Auth::PutPolicy.new(@bucket, key)
|
36
|
+
code, data, raw_headers = Qiniu::Storage.upload_with_put_policy(
|
37
|
+
pp,
|
38
|
+
__FILE__
|
39
|
+
)
|
40
|
+
code.should == 200
|
41
|
+
puts data.inspect
|
42
|
+
puts raw_headers.inspect
|
43
|
+
|
44
|
+
### 获取下载地址
|
45
|
+
code, data = Qiniu::Storage.get(@bucket, key)
|
46
|
+
code.should == 200
|
47
|
+
puts data.inspect
|
48
|
+
|
49
|
+
url = data['url']
|
50
|
+
|
51
|
+
### 授权下载地址(不带参数)
|
52
|
+
download_url = Qiniu::Auth.authorize_download_url(url)
|
53
|
+
puts "download_url=#{download_url}"
|
54
|
+
|
55
|
+
result = RestClient.get(download_url)
|
56
|
+
result.code.should == 200
|
57
|
+
result.body.should_not be_empty
|
58
|
+
|
59
|
+
### 授权下载地址(带参数)
|
60
|
+
download_url = Qiniu::Auth.authorize_download_url(
|
61
|
+
url,
|
62
|
+
{
|
63
|
+
:fop => 'download/a.m3u8'
|
64
|
+
}
|
65
|
+
)
|
66
|
+
puts "download_url=#{download_url}"
|
67
|
+
|
68
|
+
result = RestClient.get(download_url)
|
69
|
+
result.code.should == 200
|
70
|
+
result.body.should_not be_empty
|
71
|
+
|
72
|
+
### 删除文件
|
73
|
+
code, data = Qiniu::Storage.delete(@bucket, key)
|
74
|
+
code.should == 200
|
75
|
+
puts data.inspect
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end # module Storage
|
81
|
+
end # module Qiniu
|
Binary file
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'qiniu/auth'
|
5
|
+
require 'qiniu'
|
6
|
+
require 'qiniu/fop'
|
7
|
+
|
8
|
+
module Qiniu
|
9
|
+
module Fop
|
10
|
+
describe Fop do
|
11
|
+
|
12
|
+
before :all do
|
13
|
+
|
14
|
+
### 复用RubySDK-Test-Storage空间
|
15
|
+
@bucket = 'RubySDK-Test-Storage'
|
16
|
+
@bucket = make_unique_bucket(@bucket)
|
17
|
+
|
18
|
+
### 尝试创建空间
|
19
|
+
result = Qiniu.mkbucket(@bucket)
|
20
|
+
puts result.inspect
|
21
|
+
|
22
|
+
pic_fname = "image_logo_for_test.png"
|
23
|
+
@key = make_unique_key_in_bucket(pic_fname)
|
24
|
+
|
25
|
+
local_file = File.expand_path('../' + pic_fname, __FILE__)
|
26
|
+
|
27
|
+
upopts = {
|
28
|
+
:scope => @bucket,
|
29
|
+
:expires_in => 3600,
|
30
|
+
:customer => "why404@gmail.com",
|
31
|
+
:async_options => "imageView/1/w/120/h/120",
|
32
|
+
:return_body => '{"size":$(fsize), "hash":$(etag), "width":$(imageInfo.width), "height":$(imageInfo.height)}'
|
33
|
+
}
|
34
|
+
uptoken = Qiniu.generate_upload_token(upopts)
|
35
|
+
data = Qiniu.upload_file :uptoken => uptoken, :file => local_file, :bucket => @bucket, :key => @key
|
36
|
+
puts data.inspect
|
37
|
+
|
38
|
+
data["size"].should_not be_zero
|
39
|
+
data["hash"].should_not be_empty
|
40
|
+
data["width"].should_not be_zero
|
41
|
+
data["height"].should_not be_zero
|
42
|
+
|
43
|
+
result = Qiniu.get(@bucket, @key)
|
44
|
+
result["url"].should_not be_empty
|
45
|
+
puts result.inspect
|
46
|
+
@source_image_url = result["url"]
|
47
|
+
|
48
|
+
@mogrify_options = {
|
49
|
+
:thumbnail => "!120x120>",
|
50
|
+
:gravity => "center",
|
51
|
+
:crop => "!120x120a0a0",
|
52
|
+
:quality => 85,
|
53
|
+
:rotate => 45,
|
54
|
+
:format => "jpg",
|
55
|
+
:auto_orient => true
|
56
|
+
}
|
57
|
+
end
|
58
|
+
|
59
|
+
after :all do
|
60
|
+
### 不删除Bucket以备下次使用
|
61
|
+
end
|
62
|
+
|
63
|
+
context ".info" do
|
64
|
+
it "should works" do
|
65
|
+
code, data = Qiniu::Fop::Image.info(@source_image_url)
|
66
|
+
code.should == 200
|
67
|
+
puts data.inspect
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
=begin
|
72
|
+
context ".exif" do
|
73
|
+
it "should works" do
|
74
|
+
code, data = Qiniu::Fop::Image.exif(@source_image_url)
|
75
|
+
puts data.inspect
|
76
|
+
end
|
77
|
+
end
|
78
|
+
=end
|
79
|
+
|
80
|
+
context ".mogrify_preview_url" do
|
81
|
+
it "should works" do
|
82
|
+
mogrify_preview_url = Qiniu::Fop::Image.mogrify_preview_url(@source_image_url, @mogrify_options)
|
83
|
+
puts mogrify_preview_url.inspect
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
end # module Fop
|
89
|
+
end # module Qiniu
|
@@ -0,0 +1,156 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# vim: sw=2 ts=2
|
3
|
+
|
4
|
+
require 'digest/sha1'
|
5
|
+
require 'spec_helper'
|
6
|
+
require 'qiniu/auth'
|
7
|
+
require 'qiniu/management'
|
8
|
+
require 'qiniu'
|
9
|
+
|
10
|
+
module Qiniu
|
11
|
+
module Storage
|
12
|
+
describe Storage do
|
13
|
+
|
14
|
+
before :all do
|
15
|
+
@bucket = 'RubySDK-Test-Management'
|
16
|
+
@bucket = make_unique_bucket(@bucket)
|
17
|
+
|
18
|
+
### 尝试创建Bucket
|
19
|
+
result = Qiniu.mkbucket(@bucket)
|
20
|
+
puts result.inspect
|
21
|
+
|
22
|
+
@key = Digest::SHA1.hexdigest((Time.now.to_i+rand(100)).to_s)
|
23
|
+
@key = make_unique_key_in_bucket(@key)
|
24
|
+
|
25
|
+
@key2 = @key + rand(100).to_s
|
26
|
+
end
|
27
|
+
|
28
|
+
after :all do
|
29
|
+
### 不删除Bucket以备下次使用
|
30
|
+
end
|
31
|
+
|
32
|
+
### 准备数据
|
33
|
+
context ".prepare_file" do
|
34
|
+
it "should works" do
|
35
|
+
pp = Auth::PutPolicy.new(@bucket, @key)
|
36
|
+
code, data, raw_headers = Qiniu::Storage.upload_with_put_policy(
|
37
|
+
pp,
|
38
|
+
__FILE__
|
39
|
+
)
|
40
|
+
code.should == 200
|
41
|
+
puts data.inspect
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
### 列举Bucket
|
46
|
+
context ".buckets" do
|
47
|
+
it "should works" do
|
48
|
+
code, data = Storage.buckets
|
49
|
+
code.should == 200
|
50
|
+
puts data.inspect
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
context ".stat" do
|
55
|
+
it "should works" do
|
56
|
+
code, data = Storage.stat(@bucket, @key)
|
57
|
+
code.should == 200
|
58
|
+
puts data.inspect
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
context ".get" do
|
63
|
+
it "should works" do
|
64
|
+
code, data = Storage.get(@bucket, @key)
|
65
|
+
code.should == 200
|
66
|
+
puts data.inspect
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context ".batch" do
|
71
|
+
it "should works" do
|
72
|
+
code, data = Storage.batch("stat", @bucket, [@key])
|
73
|
+
code.should == 200
|
74
|
+
puts data.inspect
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context ".batch_stat" do
|
79
|
+
it "should works" do
|
80
|
+
code, data = Storage.batch_stat(@bucket, [@key])
|
81
|
+
code.should == 200
|
82
|
+
puts data.inspect
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context ".batch_get" do
|
87
|
+
it "should works" do
|
88
|
+
code, data = Storage.batch_get(@bucket, [@key])
|
89
|
+
code.should == 200
|
90
|
+
puts data.inspect
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
context ".batch_copy" do
|
95
|
+
it "should works" do
|
96
|
+
code, data = Storage.batch_copy @bucket, @key, @bucket, @key2
|
97
|
+
code.should == 200
|
98
|
+
puts data.inspect
|
99
|
+
|
100
|
+
code, data = Storage.delete @bucket, @key2
|
101
|
+
code.should == 200
|
102
|
+
puts data.inspect
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
context ".batch_move" do
|
107
|
+
it "should works" do
|
108
|
+
code, data = Storage.batch_move @bucket, @key, @bucket, @key2
|
109
|
+
code.should == 200
|
110
|
+
puts data.inspect
|
111
|
+
|
112
|
+
code3, data3 = Storage.batch_move @bucket, @key2, @bucket, @key
|
113
|
+
code3.should == 200
|
114
|
+
puts data3.inspect
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
context ".move" do
|
119
|
+
it "should works" do
|
120
|
+
code, data = Storage.move(@bucket, @key, @bucket, @key2)
|
121
|
+
code.should == 200
|
122
|
+
puts data.inspect
|
123
|
+
|
124
|
+
code2, data2 = Storage.stat(@bucket, @key2)
|
125
|
+
code2.should == 200
|
126
|
+
puts data2.inspect
|
127
|
+
|
128
|
+
code3, data3 = Storage.move(@bucket, @key2, @bucket, @key)
|
129
|
+
code3.should == 200
|
130
|
+
puts data3.inspect
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
context ".copy" do
|
135
|
+
it "should works" do
|
136
|
+
code, data = Storage.copy(@bucket, @key, @bucket, @key2)
|
137
|
+
code.should == 200
|
138
|
+
puts data.inspect
|
139
|
+
|
140
|
+
code, data = Storage.delete(@bucket, @key2)
|
141
|
+
code.should == 200
|
142
|
+
puts data.inspect
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
context ".delete" do
|
147
|
+
it "should works" do
|
148
|
+
code, data = Storage.delete(@bucket, @key)
|
149
|
+
code.should == 200
|
150
|
+
puts data.inspect
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
155
|
+
end # module Storage
|
156
|
+
end # module Qiniu
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'spec_helper'
|
4
|
+
require 'qiniu/auth'
|
5
|
+
require 'qiniu'
|
6
|
+
require 'qiniu/misc'
|
7
|
+
|
8
|
+
module Qiniu
|
9
|
+
module Misc
|
10
|
+
describe Misc do
|
11
|
+
|
12
|
+
before :all do
|
13
|
+
### 复用RubySDK-Test-Management空间
|
14
|
+
@bucket = 'RubySDK-Test-Management'
|
15
|
+
@bucket = make_unique_bucket(@bucket)
|
16
|
+
|
17
|
+
result = Qiniu.mkbucket(@bucket)
|
18
|
+
puts result.inspect
|
19
|
+
end
|
20
|
+
|
21
|
+
after :all do
|
22
|
+
### 不删除Bucket以备下次使用
|
23
|
+
end
|
24
|
+
|
25
|
+
context ".set_protected" do
|
26
|
+
it "should works" do
|
27
|
+
code, data = Qiniu::Misc.set_protected(@bucket, 1)
|
28
|
+
code.should == 200
|
29
|
+
puts data.inspect
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context ".set_separator" do
|
34
|
+
it "should works" do
|
35
|
+
code, data = Qiniu::Misc.set_separator(@bucket, "-")
|
36
|
+
code.should == 200
|
37
|
+
puts data.inspect
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context ".set_style" do
|
42
|
+
it "should works" do
|
43
|
+
code, data = Qiniu::Misc.set_style(@bucket, "small.jpg", "imageMogr/auto-orient/thumbnail/!120x120r/gravity/center/crop/!120x120/quality/80")
|
44
|
+
code.should == 200
|
45
|
+
puts data.inspect
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context ".unset_style" do
|
50
|
+
it "should works" do
|
51
|
+
code, data = Qiniu::Misc.unset_style(@bucket, "small.jpg")
|
52
|
+
code.should == 200
|
53
|
+
puts data.inspect
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end # module Misc
|
59
|
+
end # module Qiniu
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# vim: sw=2 ts=2
|
3
|
+
|
4
|
+
require 'spec_helper'
|
5
|
+
require 'qiniu/auth'
|
6
|
+
require 'qiniu'
|
7
|
+
require 'qiniu/fop'
|
8
|
+
|
9
|
+
module Qiniu
|
10
|
+
module Fop
|
11
|
+
module Persistance
|
12
|
+
describe Persistance do
|
13
|
+
|
14
|
+
before :all do
|
15
|
+
### 复用RubySDK-Test-Storage空间
|
16
|
+
@bucket = 'RubySDK-Test-Storage'
|
17
|
+
@bucket = make_unique_bucket(@bucket)
|
18
|
+
|
19
|
+
### 尝试创建空间
|
20
|
+
code, data, headers = Qiniu::Storage.make_a_public_bucket(@bucket)
|
21
|
+
puts code.inspect
|
22
|
+
puts data.inspect
|
23
|
+
puts headers.inspect
|
24
|
+
|
25
|
+
pic_fname = "image_logo_for_test.png"
|
26
|
+
@key = make_unique_key_in_bucket(pic_fname)
|
27
|
+
|
28
|
+
local_file = File.expand_path('../' + pic_fname, __FILE__)
|
29
|
+
|
30
|
+
### 检查测试文件存在性
|
31
|
+
code, body, headers = Qiniu::Storage.stat(@bucket, @key)
|
32
|
+
if code == 404 || code == 612 then
|
33
|
+
# 文件不存在,尝试上传
|
34
|
+
pp = Qiniu::Auth.PutPolicy.new(@bucket, @key)
|
35
|
+
code, body, headers = Qiniu::Storage.upload_with_put_policy(
|
36
|
+
pp,
|
37
|
+
local_file
|
38
|
+
)
|
39
|
+
puts "Put a test file for Persistance cases"
|
40
|
+
puts code.inspect
|
41
|
+
puts body.inspect
|
42
|
+
puts header.inspect
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
after :all do
|
47
|
+
### 不删除Bucket以备下次使用
|
48
|
+
end
|
49
|
+
|
50
|
+
context ".pfop" do
|
51
|
+
it "should works" do
|
52
|
+
pp = Persistance::PfopPolicy.new(
|
53
|
+
@bucket,
|
54
|
+
@key,
|
55
|
+
'imageView2/1/w/80/h/80', # fops
|
56
|
+
'www.baidu.com' # notify_url
|
57
|
+
)
|
58
|
+
|
59
|
+
code, data, headers = Qiniu::Fop::Persistance.pfop(pp)
|
60
|
+
code.should == 200
|
61
|
+
puts data.inspect
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
context ".prefop" do
|
66
|
+
it "should works" do
|
67
|
+
code, data, headers = Qiniu::Fop::Persistance.prefop('fakePersistentId')
|
68
|
+
code.should == 612
|
69
|
+
puts code.inspect
|
70
|
+
puts data.inspect
|
71
|
+
puts headers.inspect
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context ".p1" do
|
76
|
+
it "should works" do
|
77
|
+
url = 'http://fake.qiniudn.com/fake.jpg'
|
78
|
+
fop = 'imageView2/1/w/80/h/80'
|
79
|
+
target_url = "#{url}?p/1/#{CGI.escape(fop).gsub('+', '%20')}"
|
80
|
+
|
81
|
+
p1_url = Qiniu::Fop::Persistance.generate_p1_url(url, fop)
|
82
|
+
p1_url.should == target_url
|
83
|
+
puts p1_url.inspect
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end # module Persistance
|
88
|
+
end # module Fop
|
89
|
+
end # module Qiniu
|