updated Qiniu::RS.generate_upload_token()

This commit is contained in:
404
2012-07-03 16:29:41 +08:00
parent 0a4f8c1471
commit c60cc6e4b8
8 changed files with 118 additions and 5 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
PATH
remote: .
specs:
qiniu-rs (2.1.1)
qiniu-rs (2.1.2)
json (~> 1.7.3)
mime-types (~> 1.19)
rest-client (~> 1.6.7)
+16 -2
View File
@@ -12,6 +12,9 @@ module Qiniu
autoload :IO, 'qiniu/rs/io'
autoload :RS, 'qiniu/rs/rs'
autoload :Image, 'qiniu/rs/image'
autoload :AccessToken, 'qiniu/tokens/access_token'
autoload :QboxToken, 'qiniu/tokens/qbox_token'
autoload :UploadToken, 'qiniu/tokens/upload_token'
class << self
@@ -115,8 +118,19 @@ module Qiniu
Image.preivew_url(url, spec)
end
def generate_upload_token(scope, expires_in, callback_url = nil, return_url = nil)
Utils.generate_upload_token(scope, expires_in, callback_url, return_url)
#def generate_upload_token(scope, expires_in, callback_url = nil, return_url = nil)
# Utils.generate_upload_token(scope, expires_in, callback_url, return_url)
#end
def generate_upload_token(opts = {})
token_obj = UploadToken.new(opts)
token_obj.access_key = Config.settings[:access_key]
token_obj.secret_key = Config.settings[:secret_key]
#token_obj.scope = opts[:scope]
#token_obj.expires_in = opts[:expires_in]
#token_obj.callback_url = opts[:callback_url]
#token_obj.return_url = opts[:return_url]
token_obj.generate_token
end
end
+2
View File
@@ -151,6 +151,7 @@ module Qiniu
%Q(#{access_key}:#{encoded_digest})
end
=begin
def generate_upload_token(scope, expires_in, callback_url = nil, return_url = nil)
access_key = Config.settings[:access_key]
secret_key = Config.settings[:secret_key]
@@ -163,6 +164,7 @@ module Qiniu
encoded_digest = urlsafe_base64_encode(hmac.digest)
%Q(#{access_key}:#{encoded_digest}:#{signature})
end
=end
end
end
+1 -1
View File
@@ -2,6 +2,6 @@
module Qiniu
module RS
VERSION = "2.1.1"
VERSION = "2.1.2"
end
end
+23
View File
@@ -0,0 +1,23 @@
# -*- encoding: utf-8 -*-
require 'hmac-sha1'
require 'qiniu/rs/config'
require 'qiniu/rs/utils'
module Qiniu
module RS
class AccessToken
include Utils
attr_accessor :access_key, :secret_key
def generate_encoded_digest(signature)
hmac = HMAC::SHA1.new(@secret_key)
hmac.update(signature)
urlsafe_base64_encode(hmac.digest)
end
end
end
end
+37
View File
@@ -0,0 +1,37 @@
# -*- encoding: utf-8 -*-
require 'json'
require 'qiniu/tokens/access_token'
module Qiniu
module RS
class QboxToken < AccessToken
attr_accessor :url, :params
def initialize(opts = {})
@url = opts[:url]
@params = opts[:params]
end
def generate_signature
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)
total_param = @params.map { |key, value| key.to_s+"="+value.to_s }
signature += total_param.join("&")
end
signature
end
def generate_token
encoded_digest = generate_encoded_digest(signature)
%Q(#{@access_key}:#{encoded_digest})
end
end
end
end
+37
View File
@@ -0,0 +1,37 @@
# -*- encoding: utf-8 -*-
require 'json'
require 'qiniu/tokens/access_token'
require 'qiniu/rs/utils'
module Qiniu
module RS
class UploadToken < AccessToken
include Utils
attr_accessor :scope, :expires_in, :callback_url, :return_url
def initialize(opts = {})
@scope = opts[:scope]
@expires_in = opts[:expires_in]
@callback_url = opts[:callback_url]
@return_url = opts[:return_url]
end
def generate_signature
params = {:scope => @scope, :deadline => Time.now.to_i + @expires_in}
params[:callbackUrl] = @callback_url if !@callback_url.nil? && !@calback_url.empty?
params[:returnUrl] = @return_url if !@return_url.nil? && !@return_url.empty?
urlsafe_base64_encode(params.to_json)
end
def generate_token
signature = generate_signature
encoded_digest = generate_encoded_digest(signature)
%Q(#{@access_key}:#{encoded_digest}:#{signature})
end
end
end
end
+1 -1
View File
@@ -151,7 +151,7 @@ module Qiniu
context ".generate_upload_token" do
it "should works" do
data = Qiniu::RS.generate_upload_token('test_bucket', 3600)
data = Qiniu::RS.generate_upload_token({:scope => 'test_bucket', :expires_in => 3600})
data.should_not be_empty
puts data.inspect
end