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