将Utils.generate_qbox_signature()移至Auth.generate_acctoken()。

This commit is contained in:
Liang Tao
2014-03-27 13:34:58 +08:00
parent fc5afc332a
commit b99ff384ef
2 changed files with 42 additions and 23 deletions
+42 -2
View File
@@ -1,6 +1,8 @@
# -*- encoding: utf-8 -*-
# vim: sw=2 ts=2
require 'hmac-sha1'
require 'uri'
require 'qiniu/exceptions'
@@ -12,8 +14,11 @@ module Qiniu
include Utils
def call_with_signature(url, data, retry_times = 0, options = {})
code, data, raw_headers = http_request url, data, options.merge({:qbox_signature_token => generate_qbox_signature(url, data, options[:mime])})
[code, data, raw_headers]
return Utils.http_request(
url,
data,
options.merge({:qbox_signature_token => generate_acctoken(url, data)})
)
end # call_with_signature
def request(url, data = nil, options = {})
@@ -61,6 +66,41 @@ module Qiniu
return "#{download_url}&token=#{dntoken}"
end # authorize_download_url
def generate_acctoken(url, body = '')
### 提取AK/SK信息
access_key = Config.settings[:access_key]
secret_key = Config.settings[:secret_key]
### 解析URL,生成待签名字符串
uri = URI.parse(url)
signing_str = uri.path
# 如有QueryString部分,则需要加上
query_string = uri.query
if query_string.is_a?(String) && !query_string.empty?
singin_str += '?' + query_string
end
# 追加换行符
signing_str += "\n"
# 如果有Body,则也加上
# (仅限于mime == "application/x-www-form-urlencoded"的情况)
if body.is_a?(String) && !body.empty?
signing_str += body
end
### 生成数字签名
sign = HMAC::SHA1.new(secret_key).update(signing_str).digest
encoded_sign = Utils.urlsafe_base64_encode(sign)
### 生成管理授权凭证
acctoken = "#{access_key}:#{encoded_sign}"
### 返回管理授权凭证
return acctoken
end # generate_acctoken
end # class << self
end # module Auth
-21
View File
@@ -128,26 +128,5 @@ module Qiniu
File.open(filepath, "rb") { |f| Zlib.crc32 f.read }
end
def generate_qbox_signature(url, params, mime = nil)
access_key = Config.settings[:access_key]
secret_key = Config.settings[:secret_key]
uri = URI.parse(url)
signature = uri.path
query_string = uri.query
signature += '?' + query_string if !query_string.nil? && !query_string.empty?
signature += "\n"
if params.is_a?(Hash)
params_string = generate_query_string(params)
signature += params_string
end
if mime.is_a?(String) && mime == "application/x-www-form-urlencoded" && params.is_a?(String)
signature += params
end
hmac = HMAC::SHA1.new(secret_key)
hmac.update(signature)
encoded_digest = urlsafe_base64_encode(hmac.digest)
%Q(#{access_key}:#{encoded_digest})
end
end # module Utils
end # module Qiniu