class SprocketsCDN::Providers::Qiniu

Public Instance Methods

generate_put_policy(file, opt) click to toggle source
# File lib/sprockets_cdn/providers/qiniu.rb, line 26
def generate_put_policy file, opt
  opt[:saveKey] = get_key file, opt[:dir] #file.sub(opt[:dir].to_s, '')
  opt[:scope] = @bucket
  opt[:deadline] = Time.now.to_i + 3600
  opt
end
get_key(file, dir) click to toggle source
Calls superclass method SprocketsCDN::Providers::Base#get_key
# File lib/sprockets_cdn/providers/qiniu.rb, line 33
def get_key file, dir
  path = super file, dir
  path = path[1..-1] if path =~ /^\//
  path
end
uploading(file, opt) click to toggle source
# File lib/sprockets_cdn/providers/qiniu.rb, line 10
def uploading file, opt
  put_policy = generate_put_policy file, opt
  uptoken = uptoken(put_policy)
  post_data = {
    file: File.new(file, 'rb'),
    multipart: true,
    key: put_policy[:saveKey],
    token: uptoken
  }

  res = RestClient.post "http://up.qiniu.com/", post_data
  target = JSON.parse(res)['key']
  # URI.join(@asset_host, target).to_s
  generate_remote_url target
end
uptoken(put_policy) click to toggle source
# File lib/sprockets_cdn/providers/qiniu.rb, line 39
def uptoken put_policy
  encoded_put_policy = urlsafe_base64_encode put_policy.to_json

  sign = HMAC::SHA1.new(@secret_key).update(encoded_put_policy).digest
  encoded_sign = urlsafe_base64_encode sign

  uptoken = "#{@access_key}:#{encoded_sign}:#{encoded_put_policy}"
end