mirror of
https://github.com/wahyd4/ruby-sdk.git
synced 2026-08-09 12:56:21 +10:00
添加authorize_download_url(),用于对私有资源下载URL进行授权。
This commit is contained in:
+50
-1
@@ -1,5 +1,7 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
|
||||
require 'hmac-sha1'
|
||||
|
||||
require 'qiniu/exceptions'
|
||||
|
||||
module Qiniu
|
||||
@@ -19,7 +21,54 @@ module Qiniu
|
||||
[code, data]
|
||||
end
|
||||
|
||||
end
|
||||
EMPTY_ARGS = {}
|
||||
|
||||
### 生成下载授权URL
|
||||
def authorize_download_url(url, args = EMPTY_ARGS)
|
||||
### 提取AK/SK信息
|
||||
ak = args[:access_key]
|
||||
if ak.nil? then
|
||||
ak = Config.settings[:access_key]
|
||||
end
|
||||
|
||||
sk = args[:access_key]
|
||||
if sk.nil? then
|
||||
sk = Config.settings[:secret_key]
|
||||
end
|
||||
|
||||
### 授权期计算
|
||||
if args[:expires].is_a?(Integer) && args[:expires] > 0 then
|
||||
# 指定相对时间,单位:秒
|
||||
e = Time.now.to_i + args[:expires]
|
||||
elsif args[:deadline].is_a?(Integer) then
|
||||
# 指定绝对时间,常用于调试和单元测试
|
||||
e = args[:deadline]
|
||||
else
|
||||
# 默认授权期1小时
|
||||
e = Time.now.to_i + 3600
|
||||
end
|
||||
|
||||
### URL变换:追加授权期参数
|
||||
if url.index('?').is_a?(Fixnum) then
|
||||
# 已有参数
|
||||
download_url = "#{url}&e=#{e}"
|
||||
else
|
||||
# 尚无参数
|
||||
download_url = "#{url}?e=#{e}"
|
||||
end
|
||||
|
||||
### 生成数字签名
|
||||
sign = HMAC::SHA1.new(secret_key).update(download_url)
|
||||
encoded_sign = Utils.urlsafe_base64_encode(sign)
|
||||
|
||||
### 生成下载授权凭证
|
||||
dntoken = "#{access_key}:#{encoded_sign}"
|
||||
|
||||
### 返回下载授权URL及相关参数
|
||||
return "#{download_url}&token=#{dntoken}", e, dntoken
|
||||
end # authorize_download_url
|
||||
|
||||
end # class << self
|
||||
|
||||
end # module Auth
|
||||
end # module Qiniu
|
||||
|
||||
Reference in New Issue
Block a user