mirror of
https://github.com/wahyd4/ruby-sdk.git
synced 2026-08-09 04:46:10 +10:00
allow upload callback api
This commit is contained in:
+15
-1
@@ -120,7 +120,8 @@ title: Ruby SDK 使用指南 | 七牛云存储
|
||||
:expires_in => expires_in_seconds,
|
||||
:callback_url => callback_url,
|
||||
:callback_body_type => callback_body_type,
|
||||
:customer => end_user_id
|
||||
:customer => end_user_id,
|
||||
:escape => allow_upload_callback_api
|
||||
|
||||
**参数**
|
||||
|
||||
@@ -139,6 +140,19 @@ title: Ruby SDK 使用指南 | 七牛云存储
|
||||
:customer
|
||||
: 可选,字符串类型(String),客户方终端用户(End User)的ID,该字段可以用来标示一个文件的属主,这在一些特殊场景下(比如给终端用户上传的图片打上名字水印)非常有用。
|
||||
|
||||
:escape
|
||||
: 可选,数字类型,可选值 0 或者 1,缺省为 0 。值为 1 表示 callback 传递的自定义数据中允许存在转义符号 `$(VarExpression)`,参考 [VarExpression](/v3/api/words/#VarExpression)。
|
||||
|
||||
当 `escape` 的值为 `1` 时,常见的转义语法如下:
|
||||
|
||||
- 若 `callbackBodyType` 为 `application/json` 时,一个典型的自定义回调数据([CallbackParams](/v3/api/io/#CallbackParams))为:
|
||||
|
||||
`{foo: "bar", w: $(imageInfo.width), h: $(imageInfo.height), exif: $(exif)}`
|
||||
|
||||
- 若 `callbackBodyType` 为 `application/x-www-form-urlencoded` 时,一个典型的自定义回调数据([CallbackParams](/v3/api/io/#CallbackParams))为:
|
||||
|
||||
`foo=bar&w=$(imageInfo.width)&h=$(imageInfo.height)&exif=$(exif)`
|
||||
|
||||
**返回值**
|
||||
|
||||
返回一个字符串类型(String)的用于上传文件用的临时授权 `upload_token`。
|
||||
|
||||
@@ -224,6 +224,7 @@ module Qiniu
|
||||
#token_obj.callback_url = opts[:callback_url]
|
||||
#token_obj.callback_body_type = opts[:callback_body_type]
|
||||
#token_obj.customer = opts[:customer]
|
||||
#token_obj.escape = opts[:escape]
|
||||
token_obj.generate_token
|
||||
end
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ module Qiniu
|
||||
module Version
|
||||
MAJOR = 3
|
||||
MINOR = 1
|
||||
PATCH = 0
|
||||
PATCH = 1
|
||||
# Returns a version string by joining <tt>MAJOR</tt>, <tt>MINOR</tt>, and <tt>PATCH</tt> with <tt>'.'</tt>
|
||||
#
|
||||
# Example
|
||||
|
||||
@@ -10,7 +10,7 @@ module Qiniu
|
||||
|
||||
include Utils
|
||||
|
||||
attr_accessor :scope, :expires_in, :callback_url, :callback_body_type, :customer
|
||||
attr_accessor :scope, :expires_in, :callback_url, :callback_body_type, :customer, :escape
|
||||
|
||||
def initialize(opts = {})
|
||||
@scope = opts[:scope]
|
||||
@@ -18,6 +18,7 @@ module Qiniu
|
||||
@callback_url = opts[:callback_url]
|
||||
@callback_body_type = opts[:callback_body_type]
|
||||
@customer = opts[:customer]
|
||||
@escape = opts[:escape]
|
||||
end
|
||||
|
||||
def generate_signature
|
||||
@@ -25,6 +26,7 @@ module Qiniu
|
||||
params[:callbackUrl] = @callback_url if !@callback_url.nil? && !@callback_url.empty?
|
||||
params[:callbackBodyType] = @callback_body_type if !@callback_body_type.nil? && !@callback_body_type.empty?
|
||||
params[:customer] = @customer if !@customer.nil? && !@customer.empty?
|
||||
params[:escape] = 1 if @escape == 1 || @escape == true
|
||||
urlsafe_base64_encode(params.to_json)
|
||||
end
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ module Qiniu
|
||||
|
||||
context ".upload_file" do
|
||||
it "should works" do
|
||||
uptoken_opts = {:scope => @bucket}
|
||||
uptoken_opts = {:scope => @bucket, :escape => 0}
|
||||
upload_opts = {
|
||||
:uptoken => Qiniu::RS.generate_upload_token(uptoken_opts),
|
||||
:file => __FILE__,
|
||||
@@ -137,7 +137,7 @@ module Qiniu
|
||||
File.open(localfile, "w"){|f| 5242888.times{f.write(Random.rand(9).to_s)}}
|
||||
key = Digest::SHA1.hexdigest(localfile+Time.now.to_s)
|
||||
# generate the upload token
|
||||
uptoken_opts = {:scope => @bucket, :expires_in => 3600, :customer => "awhy.xu@gmail.com"}
|
||||
uptoken_opts = {:scope => @bucket, :expires_in => 3600, :customer => "awhy.xu@gmail.com", :escape => 0}
|
||||
uptoken = Qiniu::RS.generate_upload_token(uptoken_opts)
|
||||
# uploading
|
||||
upload_opts = {
|
||||
@@ -311,7 +311,7 @@ module Qiniu
|
||||
|
||||
context ".generate_upload_token" do
|
||||
it "should works" do
|
||||
data = Qiniu::RS.generate_upload_token({:scope => 'test_bucket', :expires_in => 3600})
|
||||
data = Qiniu::RS.generate_upload_token({:scope => 'test_bucket', :expires_in => 3600, :escape => 0})
|
||||
data.should_not be_empty
|
||||
puts data.inspect
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user