class Qiniu2Upyun::Qiniu
Constants
- HOST
- NAME
Attributes
config[R]
Public Class Methods
new(config)
click to toggle source
# File lib/qiniu2upyun/qiniu.rb, line 8 def initialize(config) @config = config end
Public Instance Methods
download(key)
click to toggle source
# File lib/qiniu2upyun/qiniu.rb, line 34 def download(key) uri = get_download_uri(key) Net::HTTP.start(uri.host) do |http| request = Net::HTTP::Get.new(uri) http.request(request) do |response| data = get_data(key, response) response.read_body { |chunk| data.write(chunk) } data.io.rewind return(data.io) end end end
list(params={})
click to toggle source
# File lib/qiniu2upyun/qiniu.rb, line 16 def list(params={}) uri = get_list_uri(params) Net::HTTP.start(uri.host) do |http| request = Net::HTTP::Post.new(uri) set_headers(request, uri) response = http.request(request) if response.is_a?(Net::HTTPOK) JSON.parse(response.body) else raise ResponseError.new(response) end end end
name()
click to toggle source
# File lib/qiniu2upyun/qiniu.rb, line 12 def name NAME end
Private Instance Methods
get_access_token(uri, body=nil)
click to toggle source
# File lib/qiniu2upyun/qiniu.rb, line 102 def get_access_token(uri, body=nil) "QBox #{get_sign("#{uri.request_uri}\n#{body}")}" end
get_data(key, response)
click to toggle source
# File lib/qiniu2upyun/qiniu.rb, line 61 def get_data(key, response) length = response['Content-Length'].to_i bar = Utils.get_bar(length, 'Download') if length > 1024 * 1024 Data.new(Tempfile.new(key), bar) else Data.new(StringIO.new, bar) end end
get_download_token(uri)
click to toggle source
# File lib/qiniu2upyun/qiniu.rb, line 98 def get_download_token(uri) get_sign(uri.to_s) end
get_download_uri(key)
click to toggle source
# File lib/qiniu2upyun/qiniu.rb, line 86 def get_download_uri(key) url = "#{config.domain}/#{key}?e=#{Time.now.utc.to_i + 3600}" uri = URI(URI.encode(url)) download_token = get_download_token(uri) url = url.concat("&token=#{download_token}") uri = URI(URI.encode(url)) end
get_list_uri(params)
click to toggle source
# File lib/qiniu2upyun/qiniu.rb, line 73 def get_list_uri(params) default_params = { bucket: config.bucket, limit: 100, marker: nil, prefix: nil } query = URI.encode_www_form(default_params.merge(params)) uri = URI(URI.encode("#{HOST}/list?#{query}")) end
get_sign(signing_str)
click to toggle source
# File lib/qiniu2upyun/qiniu.rb, line 106 def get_sign(signing_str) digest = OpenSSL::Digest.new('sha1') sign = OpenSSL::HMAC.digest(digest, config.secret_key, signing_str) encoding_sign = Base64.urlsafe_encode64(sign) "#{config.access_key}:#{encoding_sign}" end
set_headers(request, uri)
click to toggle source
# File lib/qiniu2upyun/qiniu.rb, line 54 def set_headers(request, uri) access_token = get_access_token(uri) request['Authorization'] = access_token end