module Qiniu::Utils
Public Instance Methods
crc32checksum(filepath)
click to toggle source
# File lib/qiniu/utils.rb, line 103 def crc32checksum(filepath) File.open(filepath, "rb") { |f| Zlib.crc32 f.read } end
debug(msg)
click to toggle source
# File lib/qiniu/utils.rb, line 33 def debug(msg) if Config.settings[:enable_debug] Log.logger.debug(msg) end end
encode_entry_uri(bucket, key)
click to toggle source
# File lib/qiniu/utils.rb, line 22 def encode_entry_uri(bucket, key) entry_uri = bucket + ':' + key urlsafe_base64_encode(entry_uri) end
http_request(url, data = nil, options = {})
click to toggle source
已过时,仅作为兼容接口保留
# File lib/qiniu/utils.rb, line 76 def http_request url, data = nil, options = {} retry_times = 0 begin retry_times += 1 send_request_with url, data, options rescue Errno::ECONNRESET => err if Config.settings[:auto_reconnect] && retry_times < Config.settings[:max_retry_times] retry else Log.logger.error err end rescue => e Log.logger.warn "#{e.message} => Utils.http_request('#{url}')" code = 0 data = {} body = {} if e.respond_to? :response res = e.response code = res.code.to_i if res.respond_to? :code body = res.respond_to?(:body) ? res.body : "" raw_headers = res.respond_to?(:raw_headers) ? res.raw_headers : {} data = safe_json_parse(body) unless body.empty? end [code, data, raw_headers] end end
safe_json_parse(data)
click to toggle source
# File lib/qiniu/utils.rb, line 27 def safe_json_parse(data) JSON.parse(data) rescue JSON::ParserError {} end
send_request_with(url, data = nil, options = {})
click to toggle source
已过时,仅作为兼容接口保留
# File lib/qiniu/utils.rb, line 40 def send_request_with url, data = nil, options = {} options[:method] = Config.settings[:method] unless options[:method] options[:content_type] = Config.settings[:content_type] unless options[:content_type] header_options = { :accept => :json, :user_agent => Config.settings[:user_agent] } auth_token = nil if !options[:qbox_signature_token].nil? && !options[:qbox_signature_token].empty? auth_token = 'QBox ' + options[:qbox_signature_token] elsif !options[:upload_signature_token].nil? && !options[:upload_signature_token].empty? auth_token = 'UpToken ' + options[:upload_signature_token] elsif options[:access_token] auth_token = 'Bearer ' + options[:access_token] end header_options.merge!('Authorization' => auth_token) unless auth_token.nil? case options[:method] when :get response = RestClient.get(url, header_options) when :post header_options.merge!(:content_type => options[:content_type]) response = RestClient.post(url, data, header_options) end code = response.respond_to?(:code) ? response.code.to_i : 0 unless HTTP.is_response_ok?(code) raise RequestFailed.new("Request Failed", response) else data = {} body = response.respond_to?(:body) ? response.body : {} raw_headers = response.respond_to?(:raw_headers) ? response.raw_headers : {} data = safe_json_parse(body) unless body.empty? end [code, data, raw_headers] end
urlsafe_base64_decode(encoded_content)
click to toggle source
# File lib/qiniu/utils.rb, line 18 def urlsafe_base64_decode encoded_content Base64.decode64 encoded_content.gsub('_','/').gsub('-', '+') end
urlsafe_base64_encode(content)
click to toggle source
# File lib/qiniu/utils.rb, line 14 def urlsafe_base64_encode content Base64.encode64(content).strip.gsub('+', '-').gsub('/','_').gsub(/\r?\n/, '') end