Merge pull request #83 from BluntBlade/master

令http_request()输出HTTP Response Headers,并用于所有的上传测试用例。
This commit is contained in:
LI Daobing
2014-03-26 17:50:14 +08:00
13 changed files with 97 additions and 95 deletions
+12
View File
@@ -1,5 +1,17 @@
## CHANGE LOG
### v6.1.0
- Qiniu::Storage所有上传接口返回第三个值raw_headers,类型为Hash,包含已解析的HTTP响应报文中的所有Header信息。
该返回值主要用于调试。当遇到难以理解或解释的错误时,请将其中的X-Log和X-Reqid两项信息[通过邮件反馈](mailto:support@qiniu.com?subject=Ruby-SDK-Bug-Report)给我们。
- 更新Qiniu::Storage所有上传接口的测试用例,打印HTTP响应Header信息。
- 删除过时的Qiniu::Storage#put_file方法和相关测试用例
该方法调用的API已过时并逐步废弃,建议用户尽快迁移到Qiniu::Storage#upload_with_token_2方法上
### v6.0.1
- 重新划分命名空间,存储相关归入Qiniu::Storage,数据处理相关归入Qiniu::Fop,杂项相关归入Qiniu::Misc。
+2 -2
View File
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
qiniu (6.0.1)
qiniu (6.1.0)
json (~> 1.7)
mime-types (~> 1.19)
rest-client (~> 1.6)
@@ -12,7 +12,7 @@ GEM
specs:
diff-lcs (1.1.3)
fakeweb (1.3.0)
json (1.7.7)
json (1.8.1)
mime-types (1.23)
rake (10.0.3)
rest-client (1.6.7)
+1 -1
View File
@@ -14,7 +14,7 @@
在您 Ruby 应用程序的 `Gemfile` 文件中,添加如下一行代码:
gem 'qiniu', '~> 6.0.0'
gem 'qiniu', '~> 6.1.0'
然后,在应用程序所在的目录下,可以运行 `bundle` 安装依赖包:
-10
View File
@@ -54,16 +54,6 @@ module Qiniu
code == StatusOK
end
def put_file opts = {}
code, data = Storage.put_file(opts[:file],
opts[:bucket],
opts[:key],
opts[:mime_type],
opts[:note],
opts[:enable_crc32_check])
code == StatusOK
end
def upload_file opts = {}
uncontained_opts = [:uptoken, :file, :bucket, :key] - opts.keys
raise MissingArgsError, uncontained_opts unless uncontained_opts.empty?
+7 -7
View File
@@ -10,16 +10,16 @@ module Qiniu
include Utils
def call_with_signature(url, data, retry_times = 0, options = {})
code, data = http_request url, data, options.merge({:qbox_signature_token => generate_qbox_signature(url, data, options[:mime])})
[code, data]
end
code, data, raw_headers = http_request url, data, options.merge({:qbox_signature_token => generate_qbox_signature(url, data, options[:mime])})
[code, data, raw_headers]
end # call_with_signature
def request(url, data = nil, options = {})
code, data = Auth.call_with_signature(url, data, 0, options)
[code, data]
end
code, data, raw_headers = Auth.call_with_signature(url, data, 0, options)
[code, data, raw_headers]
end # request
end
end # class << self
end # module Auth
end # module Qiniu
-1
View File
@@ -20,7 +20,6 @@ module Qiniu
:content_type => 'application/x-www-form-urlencoded',
:auth_url => "https://acc.qbox.me/oauth2/token",
:rs_host => "http://rs.qiniu.com",
:io_host => "http://iovip.qbox.me",
:up_host => "http://up.qiniu.com",
:pub_host => "http://pu.qbox.me:10200",
:eu_host => "http://eu.qbox.me",
-21
View File
@@ -5,27 +5,6 @@ module Qiniu
class << self
include Utils
def put_file(local_file,
bucket,
key = nil,
mime_type = nil,
custom_meta = nil,
enable_crc32_check = false)
action_params = _generate_action_params(
local_file,
bucket,
key,
mime_type,
custom_meta,
enable_crc32_check
)
url = Config.settings[:io_host] + action_params
options = {:content_type => 'application/octet-stream'}
Auth.request url, ::IO.read(local_file), options
end # put_file
def upload_with_token(uptoken,
local_file,
bucket,
+5 -3
View File
@@ -74,10 +74,11 @@ module Qiniu
else
data = {}
body = response.respond_to?(:body) ? response.body : {}
raw_headers = response.respond_to?(:raw_headers) ? response.raw_headers : {}
data = safe_json_parse(body) unless body.empty?
end
[code, data]
end
[code, data, raw_headers]
end # send_request_with
def http_request url, data = nil, options = {}
retry_times = 0
@@ -99,9 +100,10 @@ module Qiniu
res = e.response
code = res.code.to_i if res.respond_to? :code
body = res.respond_to?(:body) ? res.body : ""
raw_headers = res.respond_to?(:raw_headers) ? res.raw_headers : {}
data = safe_json_parse(body) unless body.empty?
end
[code, data]
[code, data, raw_headers]
end
end
+2 -2
View File
@@ -3,8 +3,8 @@
module Qiniu
module Version
MAJOR = 6
MINOR = 0
PATCH = 1
MINOR = 1
PATCH = 0
# Returns a version string by joining <tt>MAJOR</tt>, <tt>MINOR</tt>, and <tt>PATCH</tt> with <tt>'.'</tt>
#
# Example
+9 -2
View File
@@ -29,9 +29,16 @@ module Qiniu
end
### 准备数据
context ".put_file" do
context ".upload_with_token_2" do
it "should works" do
code, data = Storage.put_file(__FILE__, @bucket, @key, 'application/x-ruby', 'customMeta', true)
upopts = {:scope => @bucket, :expires_in => 3600, :endUser => "why404@gmail.com"}
uptoken = Qiniu.generate_upload_token(upopts)
code, data, raw_headers = Qiniu::Storage.upload_with_token_2(
uptoken,
__FILE__,
@key
)
code.should == 200
puts data.inspect
end
-11
View File
@@ -37,17 +37,6 @@ module Qiniu
### 不删除Bucket以备下次使用
end
context ".put_file" do
it "should works" do
result = Qiniu.put_file :file => __FILE__,
:bucket => @bucket,
:key => @key,
:mime_type => 'application/x-ruby',
:enable_crc32_check => true
result.should be_true
end
end
context ".buckets" do
it "should works" do
result = Qiniu.buckets
+58 -34
View File
@@ -19,26 +19,31 @@ module Qiniu
@key = Digest::SHA1.hexdigest((Time.now.to_i+rand(100)).to_s)
@key = make_unique_key_in_bucket(@key)
puts "key=#{@key}"
@localfile_5m = "5M.txt"
File.open(@localfile_5m, "w"){|f| 5242888.times{ f.write(rand(9).to_s) }}
@key_5m = Digest::SHA1.hexdigest(@localfile_5m+Time.now.to_s)
@key_5m = make_unique_key_in_bucket(@key_5m)
puts "key_5m=#{@key_5m}"
@localfile_4m = "4M.txt"
File.open(@localfile_4m, "w"){|f| (1 << 22).times{ f.write(rand(9).to_s) }}
@key_4m = Digest::SHA1.hexdigest(@localfile_4m+Time.now.to_s)
@key_4m = make_unique_key_in_bucket(@key_4m)
puts "key_4m=#{@key_4m}"
@localfile_8m = "8M.txt"
File.open(@localfile_8m, "w"){|f| (1 << 23).times{ f.write(rand(9).to_s) }}
@key_8m = Digest::SHA1.hexdigest(@localfile_8m+Time.now.to_s)
@key_8m = make_unique_key_in_bucket(@key_8m)
puts "key_8m=#{@key_8m}"
@localfile_1m = "1M.txt"
File.open(@localfile_1m, "w"){|f| (1 << 20).times{ f.write(rand(9).to_s) }}
@key_1m = Digest::SHA1.hexdigest(@localfile_1m+Time.now.to_s)
@key_1m = make_unique_key_in_bucket(@key_1m)
puts "key_1m=#{@key_1m}"
end
after :all do
@@ -52,37 +57,23 @@ module Qiniu
end
### 测试单文件直传
context ".put_file" do
it "should works" do
code, data = Qiniu::Storage.put_file(__FILE__, @bucket, @key, 'application/x-ruby', 'customMeta', true)
code.should == 200
puts data.inspect
end
end
context ".stat" do
it "should exists" do
code, data = Qiniu::Storage.stat(@bucket, @key)
puts data.inspect
code.should == 200
end
end
context ".delete" do
it "should works" do
code, data = Qiniu::Storage.delete(@bucket, @key)
puts data.inspect
code.should == 200
end
end
context ".upload_with_token" do
it "should works" do
upopts = {:scope => @bucket, :expires_in => 3600, :customer => "why404@gmail.com"}
uptoken = Qiniu.generate_upload_token(upopts)
code, data = Qiniu::Storage.upload_with_token(uptoken, __FILE__, @bucket, @key, nil, nil, nil, true)
code, data, raw_headers = Qiniu::Storage.upload_with_token(
uptoken,
__FILE__,
@bucket,
@key,
nil,
nil,
nil,
true
)
code.should == 200
puts data.inspect
puts raw_headers.inspect
end
end
@@ -107,10 +98,15 @@ module Qiniu
upopts = {:scope => @bucket, :expires_in => 3600, :endUser => "why404@gmail.com"}
uptoken = Qiniu.generate_upload_token(upopts)
code, data = Qiniu::Storage.upload_with_token_2(uptoken, __FILE__, @key)
code, data, raw_headers = Qiniu::Storage.upload_with_token_2(
uptoken,
__FILE__,
@key
)
code.should == 200
puts data.inspect
puts raw_headers.inspect
end
end # .upload_with_token_2
@@ -135,9 +131,16 @@ module Qiniu
it "should works" do
upopts = {:scope => @bucket, :expires_in => 3600, :customer => "why404@gmail.com"}
uptoken = Qiniu.generate_upload_token(upopts)
code, data = Qiniu::Storage.resumable_upload_with_token(uptoken, @localfile_5m, @bucket, @key_5m)
puts data.inspect
code, data, raw_headers = Qiniu::Storage.resumable_upload_with_token(
uptoken,
@localfile_5m,
@bucket,
@key_5m
)
(code/100).should == 2
puts data.inspect
puts raw_headers.inspect
puts "key_5m=#{@key_5m}"
end
end
@@ -161,9 +164,16 @@ module Qiniu
it "should works" do
upopts = {:scope => @bucket, :expires_in => 3600, :customer => "why404@gmail.com"}
uptoken = Qiniu.generate_upload_token(upopts)
code, data = Qiniu::Storage.resumable_upload_with_token(uptoken, @localfile_4m, @bucket, @key_4m)
puts data.inspect
code, data, raw_headers = Qiniu::Storage.resumable_upload_with_token(
uptoken,
@localfile_4m,
@bucket,
@key_4m
)
(code/100).should == 2
puts data.inspect
puts raw_headers.inspect
puts "key_4m=#{@key_4m}"
end
end
@@ -187,9 +197,16 @@ module Qiniu
it "should works" do
upopts = {:scope => @bucket, :expires_in => 3600, :customer => "why404@gmail.com"}
uptoken = Qiniu.generate_upload_token(upopts)
code, data = Qiniu::Storage.resumable_upload_with_token(uptoken, @localfile_8m, @bucket, @key_8m)
puts data.inspect
code, data, raw_headers = Qiniu::Storage.resumable_upload_with_token(
uptoken,
@localfile_8m,
@bucket,
@key_8m
)
(code/100).should == 2
puts data.inspect
puts raw_headers.inspect
puts "key_8m=#{@key_8m}"
end
end
@@ -213,9 +230,16 @@ module Qiniu
it "should works" do
upopts = {:scope => @bucket, :expires_in => 3600, :customer => "why404@gmail.com"}
uptoken = Qiniu.generate_upload_token(upopts)
code, data = Qiniu::Storage.resumable_upload_with_token(uptoken, @localfile_1m, @bucket, @key_1m)
puts data.inspect
code, data, raw_headers = Qiniu::Storage.resumable_upload_with_token(
uptoken,
@localfile_1m,
@bucket,
@key_1m
)
(code/100).should == 2
puts data.inspect
puts raw_headers.inspect
puts "key_1m=#{@key_1m}"
end
end
+1 -1
View File
@@ -28,7 +28,7 @@ module Qiniu
FakeWeb.allow_net_connect = false
FakeWeb.register_uri(:get, "http://docs.qiniutek.com/", :body => {:abc => 123}.to_json)
res = Utils.send_request_with 'http://docs.qiniutek.com/', nil, :method => :get
res.should == [200, {"abc" => 123}]
res.should == [200, {"abc" => 123}, {}]
end
[400, 500].each do |code|