class Aliyun::SignatureMethods::HmacSha1
Constants
- NAME
- VERSION
Public Instance Methods
generate(params, service)
click to toggle source
# File lib/aliyun/signature_methods/hmac_sha1.rb, line 13 def generate(params, service) calculate_signature("#{service.access_key_secret}&", string_to_sign(params, service)) end
Private Instance Methods
calculate_signature(key, string_to_sign)
click to toggle source
# File lib/aliyun/signature_methods/hmac_sha1.rb, line 19 def calculate_signature(key, string_to_sign) hmac = HMAC::SHA1.new(key) hmac.update(string_to_sign) Base64.encode64(hmac.digest).gsub("\n", '') end
canonicalized_query_string(params, service)
click to toggle source
# File lib/aliyun/signature_methods/hmac_sha1.rb, line 29 def canonicalized_query_string(params, service) params.keys.sort.map do |k| "%s=%s" % [safe_encode(k.to_s), safe_encode(params[k.to_s])] end.join(service.separator) end
safe_encode(s)
click to toggle source
# File lib/aliyun/signature_methods/hmac_sha1.rb, line 35 def safe_encode(s) URI.encode_www_form_component(s).gsub(/\+/,'%20').gsub(/\*/,'%2A').gsub(/%7E/,'~') end
string_to_sign(params, service)
click to toggle source
# File lib/aliyun/signature_methods/hmac_sha1.rb, line 25 def string_to_sign(params, service) "#{service.http_method}#{service.separator}#{safe_encode('/')}#{service.separator}#{safe_encode(canonicalized_query_string(params, service))}" end