qiniu 6.5.1 → 6.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile.lock +3 -2
- data/README.md +9 -1
- data/lib/qiniu.rb +7 -1
- data/lib/qiniu/config.rb +2 -0
- data/lib/qiniu/management.rb +11 -1
- data/lib/qiniu/upload.rb +60 -0
- data/lib/qiniu/version.rb +2 -2
- data/qiniu.gemspec +1 -1
- data/rails3/qiniu.gemspec +1 -1
- data/spec/qiniu/management_spec.rb +2 -2
- data/spec/qiniu/upload_spec.rb +18 -0
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6156890d8118959d78f316edf9c7de45fd66affe
|
4
|
+
data.tar.gz: b4750d7adf8b61b924af905c4fe91757e468cf97
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 49ce22e5fdc92699eb5eed74f9c6c19db50896370c2704251bfb4aa8dd8dd65a575d6c64fe8dbcddbe37560cc29f7b8ba44697f5d531412767c5fec1c119acae
|
7
|
+
data.tar.gz: 5d2df9eb2a1533d9fbf07cc16339779699b9f24f6a00c9a0a2b598206082d9ec742b2eacaa42cb268380f22dd4b064201c9067c2c825588a1c73d41375862e6e
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
## CHANGE LOG
|
2
2
|
|
3
|
+
### V6.6.0
|
4
|
+
|
5
|
+
- 添加 upload_buffer_with_put_policy() 方法,直接上传一块数据作为文件内容。[https://github.com/qiniu/ruby-sdk/pull/146](https://github.com/qiniu/ruby-sdk/pull/146)
|
6
|
+
|
7
|
+
### V6.5.2
|
8
|
+
|
9
|
+
- 修正无法触发加载异常类的问题;修正 batch_move 参数未正确打包的问题。[https://github.com/qiniu/ruby-sdk/pull/142](https://github.com/qiniu/ruby-sdk/pull/142)
|
10
|
+
|
3
11
|
### V6.5.1
|
4
12
|
|
5
13
|
- 为 Qiniu::Auth 添加验证七牛回调请求签名合法性的函数。[https://github.com/qiniu/ruby-sdk/pull/133](https://github.com/qiniu/ruby-sdk/pull/133)
|
data/Gemfile.lock
CHANGED
@@ -4,7 +4,7 @@ PATH
|
|
4
4
|
qiniu (6.5.1)
|
5
5
|
json (~> 1.8)
|
6
6
|
mime-types (~> 1.19)
|
7
|
-
rest-client (~> 1.
|
7
|
+
rest-client (~> 1.8.0)
|
8
8
|
ruby-hmac (~> 0.4)
|
9
9
|
|
10
10
|
GEM
|
@@ -16,7 +16,8 @@ GEM
|
|
16
16
|
mime-types (1.25.1)
|
17
17
|
netrc (0.10.3)
|
18
18
|
rake (10.4.2)
|
19
|
-
rest-client (1.
|
19
|
+
rest-client (1.8.0)
|
20
|
+
http-cookie (>= 1.0.2, < 2.0)
|
20
21
|
mime-types (>= 1.16, < 3.0)
|
21
22
|
netrc (~> 0.7)
|
22
23
|
rspec (3.2.0)
|
data/README.md
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
|
16
16
|
在您 Ruby 应用程序的 `Gemfile` 文件中,添加如下一行代码:
|
17
17
|
|
18
|
-
gem 'qiniu', '
|
18
|
+
gem 'qiniu', '=> 6.4.1', '<= 6.6.0'
|
19
19
|
|
20
20
|
然后,在应用程序所在的目录下,可以运行 `bundle` 安装依赖包:
|
21
21
|
|
@@ -25,6 +25,14 @@
|
|
25
25
|
|
26
26
|
$ gem install qiniu
|
27
27
|
|
28
|
+
## Rails 4 项目安装
|
29
|
+
|
30
|
+
在 Rails 4 项目的 `Gemfile` 里添加 `qiniu` 后执行 `bundle` 命令可能会失败,这是因为 Rails 4 项目默认会使用 `mime-types` 3.x 版本。需要使用以下命令将 `mime-types` 降级为满足 Qiniu Ruby SDK 的 2.6.x 版本。
|
31
|
+
|
32
|
+
bundle update mime-types
|
33
|
+
|
34
|
+
由于 `mime-types` 3.0 要求的最低 Ruby 版本是 2.0,而 Qiniu Ruby SDK 支持 Ruby 1.9,因此我们不能通过简单修改对 `mime-types` 的版本依赖来解决此问题。
|
35
|
+
|
28
36
|
## 使用
|
29
37
|
|
30
38
|
参考文档:[七牛云存储 Ruby SDK 使用指南](http://developer.qiniu.com/docs/v6/sdk/ruby-sdk.html)
|
data/lib/qiniu.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
|
+
require 'qiniu/exceptions'
|
4
|
+
|
3
5
|
module Qiniu
|
4
6
|
autoload :Version, 'qiniu/version'
|
5
7
|
autoload :Utils, 'qiniu/utils'
|
6
8
|
autoload :Auth, 'qiniu/auth'
|
7
9
|
autoload :Config, 'qiniu/config'
|
8
10
|
autoload :Log, 'qiniu/log'
|
9
|
-
autoload :Exception, 'qiniu/exceptions'
|
10
11
|
autoload :AccessToken, 'qiniu/tokens/access_token'
|
11
12
|
autoload :QboxToken, 'qiniu/tokens/qbox_token'
|
12
13
|
autoload :UploadToken, 'qiniu/tokens/upload_token'
|
@@ -117,6 +118,11 @@ module Qiniu
|
|
117
118
|
code == StatusOK
|
118
119
|
end
|
119
120
|
|
121
|
+
def fetch(bucket, target_url, key)
|
122
|
+
code, data = Storage.fetch(bucket, target_url, key)
|
123
|
+
code == StatusOK
|
124
|
+
end
|
125
|
+
|
120
126
|
def batch(command, bucket, keys)
|
121
127
|
code, data = Storage.batch(command, bucket, keys)
|
122
128
|
code == StatusOK ? data : false
|
data/lib/qiniu/config.rb
CHANGED
@@ -20,10 +20,12 @@ module Qiniu
|
|
20
20
|
:content_type => 'application/x-www-form-urlencoded',
|
21
21
|
:auth_url => "https://acc.qbox.me/oauth2/token",
|
22
22
|
:rs_host => "http://rs.qiniu.com",
|
23
|
+
:fetch_host => "http://iovip.qbox.me",
|
23
24
|
:rsf_host => "http://rsf.qbox.me",
|
24
25
|
:up_host => "http://up.qiniu.com",
|
25
26
|
:pub_host => "http://pu.qbox.me:10200",
|
26
27
|
:eu_host => "http://eu.qbox.me",
|
28
|
+
:iovip_host => "http://iovip.qbox.me",
|
27
29
|
:access_key => "",
|
28
30
|
:secret_key => "",
|
29
31
|
:auto_reconnect => true,
|
data/lib/qiniu/management.rb
CHANGED
@@ -82,6 +82,11 @@ module Qiniu
|
|
82
82
|
return HTTP.management_post(url)
|
83
83
|
end # delete
|
84
84
|
|
85
|
+
def fetch(bucket, target_url, key)
|
86
|
+
url = Config.settings[:fetch_host] + '/fetch/' + Utils.urlsafe_base64_encode(target_url) + '/to/' + encode_entry_uri(bucket, key)
|
87
|
+
return HTTP.management_post(url)
|
88
|
+
end # fetch
|
89
|
+
|
85
90
|
def batch(command, bucket, keys)
|
86
91
|
execs = []
|
87
92
|
keys.each do |key|
|
@@ -105,7 +110,7 @@ module Qiniu
|
|
105
110
|
end # batch_copy
|
106
111
|
|
107
112
|
def batch_move(*args)
|
108
|
-
_batch_cp_or_mv('move', args)
|
113
|
+
_batch_cp_or_mv('move', *args)
|
109
114
|
end # batch_move
|
110
115
|
|
111
116
|
def batch_delete(bucket, keys)
|
@@ -144,6 +149,11 @@ module Qiniu
|
|
144
149
|
return resp_code, resp_body, resp_headers, has_more, new_list_policy
|
145
150
|
end # list
|
146
151
|
|
152
|
+
def fetch(url, bucket, key)
|
153
|
+
api_url = Config.settings[:iovip_host] + '/fetch/' + Utils.urlsafe_base64_encode(url) + '/to/' + Utils.urlsafe_base64_encode("#{bucket}:#{key}")
|
154
|
+
return HTTP.management_post(api_url)
|
155
|
+
end # fetch
|
156
|
+
|
147
157
|
private
|
148
158
|
|
149
159
|
def _generate_cp_or_mv_opstr(command, source_bucket, source_key, target_bucket, target_key)
|
data/lib/qiniu/upload.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
# vim: sw=2 ts=2
|
3
3
|
|
4
|
+
require 'stringio'
|
5
|
+
|
4
6
|
module Qiniu
|
5
7
|
module Storage
|
6
8
|
class << self
|
@@ -80,6 +82,51 @@ module Qiniu
|
|
80
82
|
HTTP.api_post(url, post_data)
|
81
83
|
end # upload_with_token_2
|
82
84
|
|
85
|
+
def upload_buffer_with_token(uptoken,
|
86
|
+
buf,
|
87
|
+
key = nil,
|
88
|
+
x_vars = nil,
|
89
|
+
opts = {})
|
90
|
+
### 构造 URL
|
91
|
+
url = Config.settings[:up_host]
|
92
|
+
url[/\/*$/] = ''
|
93
|
+
url += '/'
|
94
|
+
|
95
|
+
### 构造 HTTP Body
|
96
|
+
if buf.is_a?(String)
|
97
|
+
data = StringIO.new(buf)
|
98
|
+
elsif buf.respond_to?(:read)
|
99
|
+
data = buf
|
100
|
+
end
|
101
|
+
|
102
|
+
data.define_singleton_method("path") do
|
103
|
+
'NO-PATH'
|
104
|
+
end
|
105
|
+
data.define_singleton_method("original_filename") do
|
106
|
+
'A-MASS-OF-DATA'
|
107
|
+
end
|
108
|
+
data.define_singleton_method("content_type") do
|
109
|
+
(opts[:content_type].nil? || opts[:content_type].empty?) ? 'application/octet-stream' : opts[:content_type]
|
110
|
+
end
|
111
|
+
|
112
|
+
post_data = {
|
113
|
+
:file => data,
|
114
|
+
:multipart => true,
|
115
|
+
}
|
116
|
+
if not uptoken.nil?
|
117
|
+
post_data[:token] = uptoken
|
118
|
+
end
|
119
|
+
if not key.nil?
|
120
|
+
post_data[:key] = key
|
121
|
+
end
|
122
|
+
if x_vars.is_a?(Hash)
|
123
|
+
post_data.merge!(x_vars)
|
124
|
+
end
|
125
|
+
|
126
|
+
### 发送请求
|
127
|
+
HTTP.api_post(url, post_data)
|
128
|
+
end # upload_with_token_2
|
129
|
+
|
83
130
|
### 授权举例
|
84
131
|
# put_policy.bucket | put_policy.key | key | 语义 | 授权
|
85
132
|
# :---------------- | :------------- | :------ | :--- | :---
|
@@ -102,6 +149,19 @@ module Qiniu
|
|
102
149
|
return upload_with_token_2(uptoken, local_file, key, x_vars, opts)
|
103
150
|
end # upload_with_put_policy
|
104
151
|
|
152
|
+
def upload_buffer_with_put_policy(put_policy,
|
153
|
+
buf,
|
154
|
+
key = nil,
|
155
|
+
x_vars = nil,
|
156
|
+
opts = {})
|
157
|
+
uptoken = Auth.generate_uptoken(put_policy)
|
158
|
+
if key.nil? then
|
159
|
+
key = put_policy.key
|
160
|
+
end
|
161
|
+
|
162
|
+
return upload_buffer_with_token(uptoken, buf, key, x_vars, opts)
|
163
|
+
end # upload_buffer_with_put_policy
|
164
|
+
|
105
165
|
private
|
106
166
|
def _generate_action_params(local_file,
|
107
167
|
bucket,
|
data/lib/qiniu/version.rb
CHANGED
data/qiniu.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |gem|
|
|
22
22
|
gem.add_development_dependency "rspec", ">= 2.11"
|
23
23
|
gem.add_development_dependency "fakeweb", "~> 1.3"
|
24
24
|
gem.add_runtime_dependency "json", "~> 1.8"
|
25
|
-
gem.add_runtime_dependency "rest-client", "~> 1.
|
25
|
+
gem.add_runtime_dependency "rest-client", "~> 1.8.0"
|
26
26
|
gem.add_runtime_dependency "mime-types", "~> 2.4.3"
|
27
27
|
gem.add_runtime_dependency "ruby-hmac", "~> 0.4"
|
28
28
|
gem.add_runtime_dependency "jruby-openssl", "~> 0.7" if RUBY_PLATFORM == "java"
|
data/rails3/qiniu.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |gem|
|
|
22
22
|
gem.add_development_dependency "rspec", ">= 2.11"
|
23
23
|
gem.add_development_dependency "fakeweb", "~> 1.3"
|
24
24
|
gem.add_runtime_dependency "json", "~> 1.8"
|
25
|
-
gem.add_runtime_dependency "rest-client", "~> 1.
|
25
|
+
gem.add_runtime_dependency "rest-client", "~> 1.8.0"
|
26
26
|
gem.add_runtime_dependency "mime-types", "~> 1.19"
|
27
27
|
gem.add_runtime_dependency "ruby-hmac", "~> 0.4"
|
28
28
|
gem.add_runtime_dependency "jruby-openssl", "~> 0.7" if RUBY_PLATFORM == "java"
|
@@ -99,11 +99,11 @@ module Qiniu
|
|
99
99
|
|
100
100
|
context ".batch_move" do
|
101
101
|
it "should works" do
|
102
|
-
code, data = Storage.batch_move @bucket, @key, @bucket, @key2
|
102
|
+
code, data = Storage.batch_move [@bucket, @key, @bucket, @key2]
|
103
103
|
code.should == 200
|
104
104
|
puts data.inspect
|
105
105
|
|
106
|
-
code3, data3 = Storage.batch_move @bucket, @key2, @bucket, @key
|
106
|
+
code3, data3 = Storage.batch_move [@bucket, @key2, @bucket, @key]
|
107
107
|
code3.should == 200
|
108
108
|
puts data3.inspect
|
109
109
|
end
|
data/spec/qiniu/upload_spec.rb
CHANGED
@@ -147,6 +147,24 @@ module Qiniu
|
|
147
147
|
end
|
148
148
|
end # .upload_with_put_policy
|
149
149
|
|
150
|
+
context ".upload_buffer_with_put_policy" do
|
151
|
+
it "should works" do
|
152
|
+
pp = Qiniu::Auth::PutPolicy.new(@bucket, @key)
|
153
|
+
pp.end_user = "amethyst.black@gmail.com"
|
154
|
+
puts 'put_policy=' + pp.to_json
|
155
|
+
|
156
|
+
test_line = 'This is a test line for testing put_buffer function.'
|
157
|
+
code, data, raw_headers = Qiniu::Storage.upload_buffer_with_put_policy(
|
158
|
+
pp,
|
159
|
+
test_line,
|
160
|
+
@key
|
161
|
+
)
|
162
|
+
code.should == 200
|
163
|
+
puts data.inspect
|
164
|
+
puts raw_headers.inspect
|
165
|
+
end
|
166
|
+
end # .upload_buffer_with_put_policy
|
167
|
+
|
150
168
|
context ".stat" do
|
151
169
|
it "should exists" do
|
152
170
|
code, data = Qiniu::Storage.stat(@bucket, @key)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qiniu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- why404
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-04-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -73,14 +73,14 @@ dependencies:
|
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version: 1.
|
76
|
+
version: 1.8.0
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - ~>
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 1.
|
83
|
+
version: 1.8.0
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
85
|
name: mime-types
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
@@ -185,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
185
185
|
version: '0'
|
186
186
|
requirements: []
|
187
187
|
rubyforge_project:
|
188
|
-
rubygems_version: 2.0.14
|
188
|
+
rubygems_version: 2.0.14.1
|
189
189
|
signing_key:
|
190
190
|
specification_version: 4
|
191
191
|
summary: Qiniu Resource (Cloud) Storage SDK for Ruby
|