module Alidns::Sign
Public Class Methods
sign(method, app_key, app_secret, params)
click to toggle source
生成sign数据
# File lib/alidns/sign.rb, line 9 def self.sign(method, app_key, app_secret, params) #排序 req_params = params.split('&').map{|k| k.split '='}.sort_by!{ |k| k.first}.map{|k| "#{k.first}=#{k.last}"}.join('&') req_params = URI.encode(req_params).gsub('+','%20').gsub('=','%3D').gsub('~','%7E').gsub('*','%2A').gsub('/', '%2F').gsub(':','%253A').gsub('&','%26') stringToSign = "#{method}&%2F&#{req_params}" signature = Base64.encode64 OpenSSL::HMAC.digest('sha1', "#{app_secret}&", stringToSign) signature = "Signature=#{signature}" end