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