class QingCloud::SDK::Signer
Public Class Methods
do(input)
click to toggle source
# File lib/qingcloud/sdk/request/signer.rb, line 24 def self.do(input) input[:request_params].each do |k, v| v = CGI.escape v.to_s.gsub(' ', '%20') input[:request_params][k] = v.gsub '%2520', '%20' end # build string_to_sign string_to_sign = "#{input[:request_method]}\n#{input[:config][:uri]}\n" \ "#{input[:request_params].sort.map { |k, v| "#{k}=#{v}" }.join('&')}" # build signature signature = Base64.encode64( OpenSSL::HMAC.digest( OpenSSL::Digest.new('sha256'), input[:config][:qy_secret_access_key].to_s, string_to_sign, ), ).strip signature.tr! ' ', '+' signature = CGI.escape signature input[:request_params][:signature] = signature Logger.debug "QingCloud request string to sign: [#{input[:id]}] #{string_to_sign}" Logger.debug "QingCloud request signature: [#{input[:id]}] #{signature}" input end