class QiniuMiniSdk::Policy
Public Class Methods
new(args={})
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 10 def initialize args={} @params = {} args.each do |k, v| self.send "#{k}=", v end default end
Public Instance Methods
acctoken()
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 44 def acctoken uri = URI.parse(@url) query = '?' + uri.query unless uri.query.nil? signing_str = "#{uri.path}#{uri.query}\n#{@body}" "#{QiniuMiniSdk.access_key}:#{hmac_sha1_sign signing_str}" end
body=(body)
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 30 def body=(body) @body = body end
bucket=(bucket)
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 22 def bucket=(bucket) @bucket = bucket end
download_url()
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 51 def download_url base_url = QiniuMiniSdk.urls[@bucket] || "http://#{@bucket}.qiniudn.com" url = "#{base_url}/#{@key}?e=#{@params[:deadline]}" "#{url}&token=#{QiniuMiniSdk.access_key}:#{hmac_sha1_sign url}" end
expires_in=(time)
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 34 def expires_in=(time) @params[:deadline] = Time.now.to_i + time end
key=(key)
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 18 def key=(key) @key = key end
method_missing(meth, *args, &blk)
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 58 def method_missing(meth, *args, &blk) if meth =~ /(.+)=/ @params[$1.to_s] = args.first end end
to_json()
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 64 def to_json JSON.generate @params.map {|k, v| [change_key(k.to_s), v] }.to_h end
uptoken()
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 38 def uptoken access_key = QiniuMiniSdk.access_key encoded_put_policy = urlsafe_base64_encode(self.to_json) "#{access_key}:#{encoded_sign}:#{hmac_sha1_sign encoded_put_policy}" end
url=(url)
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 26 def url=(url) @url = url end
Private Instance Methods
change_key(key)
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 71 def change_key(key) key.split("_").each_with_index.map { |value, index| if index == 0 value else value.capitalize end }.join end
default()
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 81 def default raise "没有指定bucket" if @bucket.nil? && @url.nil? self.expires_in = 3600 if @params[:deadline].nil? @params[:scope] = "#{@bucket}:#{@key}" unless @key.nil? @params[:scope] = "#{@bucket}" if @key.nil? end
hmac_sha1_sign(data)
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 92 def hmac_sha1_sign(data) digest = OpenSSL::Digest.new('sha1') urlsafe_base64_encode OpenSSL::HMAC.digest(digest, QiniuMiniSdk.secret_key, data) end
urlsafe_base64_encode(content)
click to toggle source
# File lib/qiniu_mini_sdk/policy.rb, line 88 def urlsafe_base64_encode content Base64.encode64(content).strip.gsub('+', '-').gsub('/','_').gsub(/\r?\n/, '') end