From 444956f16146e2ff767d511f04d4f6bfb8ac226a Mon Sep 17 00:00:00 2001 From: 404 Date: Wed, 23 Jan 2013 21:30:15 +0800 Subject: [PATCH] add :return_body option for Qiniu::RS.generate_upload_token() --- docs/README.md | 9 +++++++-- lib/qiniu/rs.rb | 1 + lib/qiniu/tokens/upload_token.rb | 4 +++- spec/qiniu/rs/image_spec.rb | 8 +++++++- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/README.md b/docs/README.md index 9f4d279..911da75 100644 --- a/docs/README.md +++ b/docs/README.md @@ -126,7 +126,8 @@ title: Ruby SDK 使用指南 | 七牛云存储 :callback_body_type => callback_body_type, :customer => end_user_id, :escape => allow_upload_callback_api, - :async_options => async_callback_api_commands + :async_options => async_callback_api_commands, + :return_body => custom_response_body **参数** @@ -159,7 +160,11 @@ title: Ruby SDK 使用指南 | 七牛云存储 `foo=bar&w=$(imageInfo.width)&h=$(imageInfo.height)&exif=$(exif)` :async_options -: 可选,字符串类型(String),用于设置文件上传成功后,执行指定的预转指令。参见 [uploadToken 之 asyncOps 说明](http://docs.qiniutek.com/v3/api/io/#uploadToken-asyncOps) +: 可选,字符串类型(String),用于设置文件上传成功后,执行指定的预转指令。参考 [uploadToken 之 asyncOps 说明](http://docs.qiniutek.com/v3/api/io/#uploadToken-asyncOps) + +:return_body +: 可选,字符串类型(String),用于设置文件上传成功后,执行七牛云存储规定的回调API,并以 JSON 响应格式返回其执行结果。参考 [uploadToken 之 returnBody 说明](/v3/api/io/#uploadToken-returnBody)。 + **返回值** diff --git a/lib/qiniu/rs.rb b/lib/qiniu/rs.rb index 58909b8..d248d15 100755 --- a/lib/qiniu/rs.rb +++ b/lib/qiniu/rs.rb @@ -253,6 +253,7 @@ module Qiniu #token_obj.customer = opts[:customer] #token_obj.escape = opts[:escape] #token_obj.async_options = opts[:async_options] + #token_obj.return_body = opts[:return_body] token_obj.generate_token end diff --git a/lib/qiniu/tokens/upload_token.rb b/lib/qiniu/tokens/upload_token.rb index 67ecebf..35bc70e 100755 --- a/lib/qiniu/tokens/upload_token.rb +++ b/lib/qiniu/tokens/upload_token.rb @@ -10,7 +10,7 @@ module Qiniu include Utils - attr_accessor :scope, :expires_in, :callback_url, :callback_body_type, :customer, :escape, :async_options + attr_accessor :scope, :expires_in, :callback_url, :callback_body_type, :customer, :escape, :async_options, :return_body def initialize(opts = {}) @scope = opts[:scope] @@ -20,6 +20,7 @@ module Qiniu @customer = opts[:customer] @escape = opts[:escape] @async_options = opts[:async_options] + @return_body = opts[:return_body] end def generate_signature @@ -29,6 +30,7 @@ module Qiniu params[:customer] = @customer if !@customer.nil? && !@customer.empty? params[:escape] = 1 if @escape == 1 || @escape == true params[:asyncOps] = @async_options if !@async_options.nil? && !@async_options.empty? + params[:returnBody] = @return_body if !@return_body.nil? && !@return_body.empty? Utils.urlsafe_base64_encode(params.to_json) end diff --git a/spec/qiniu/rs/image_spec.rb b/spec/qiniu/rs/image_spec.rb index 860b6c0..135897c 100755 --- a/spec/qiniu/rs/image_spec.rb +++ b/spec/qiniu/rs/image_spec.rb @@ -24,12 +24,18 @@ module Qiniu :scope => @bucket, :expires_in => 3600, :customer => "why404@gmail.com", - :async_options => "imageView/1/w/120/h/120" + :async_options => "imageView/1/w/120/h/120", + :return_body => '{"size":$(fsize), "hash":$(etag), "width":$(imageInfo.width), "height":$(imageInfo.height)}' } uptoken = Qiniu::RS.generate_upload_token(upopts) data = Qiniu::RS.upload_file :uptoken => uptoken, :file => local_file, :bucket => @bucket, :key => @key puts data.inspect + data["size"].should_not be_zero + data["hash"].should_not be_empty + data["width"].should_not be_zero + data["height"].should_not be_zero + result = Qiniu::RS.get(@bucket, @key) result["url"].should_not be_empty puts result.inspect