Class: AliyunSDK::Signer
- Inherits:
-
Object
- Object
- AliyunSDK::Signer
- Defined in:
- lib/aliyun_sdk/signer.rb
Class Method Summary collapse
Class Method Details
.percent_encode(str) ⇒ Object
16 17 18 |
# File 'lib/aliyun_sdk/signer.rb', line 16 def self.percent_encode(str) CGI.escape(str.to_s).gsub("+", "%20").gsub("*", "%2A").gsub("%7E", "~") end |
.sign(params, access_key_secret, http_method = "GET") ⇒ Object
7 8 9 10 11 12 13 14 |
# File 'lib/aliyun_sdk/signer.rb', line 7 def self.sign(params, access_key_secret, http_method = "GET") sorted = params.sort.to_h canonicalized = sorted.map { |k, v| "#{percent_encode(k)}=#{percent_encode(v)}" }.join("&") string_to_sign = "#{http_method.upcase}&%2F&" + percent_encode(canonicalized) key = "#{access_key_secret}&" digest = OpenSSL::HMAC.digest("sha1", key, string_to_sign) Base64.strict_encode64(digest) end |