module AliSms::Util
Public Class Methods
make_query_str(dataHash)
click to toggle source
# File lib/ali_sms/util.rb, line 9 def self.make_query_str(dataHash) sortHash = Hash[dataHash.sort_by { |k, v| k }] if sortHash.has_key?("sign") sortHash.delete("sign") end sortQueryStr = "" sortHash.each do |k, v| sortQueryStr = sortQueryStr + "&" + specialUrlEncode(k) + "=" + specialUrlEncode(v) end sortQueryStr = sortQueryStr[1..-1] return sortQueryStr end
make_sign(sortQueryStr, httpMethod, key)
click to toggle source
# File lib/ali_sms/util.rb, line 24 def self.make_sign(sortQueryStr, httpMethod, key) str = httpMethod + "&" + specialUrlEncode("/") + "&" + specialUrlEncode(sortQueryStr) digest = OpenSSL::Digest.new("sha1") str_8 = str.encode("UTF-8") hash = OpenSSL::HMAC.digest(digest, key, str_8) base64_str = Base64.encode64(hash).chomp sign = specialUrlEncode(base64_str) return sign end
specialUrlEncode(value)
click to toggle source
此方法没有问题
# File lib/ali_sms/util.rb, line 38 def self.specialUrlEncode(value) str = CGI.escape(value) return str.gsub("+", "%20").gsub("*", "%2A").gsub("%7E", "~") end