class AliyunSmsRuby::Client

Constants

SERVICE_URL

Public Instance Methods

send_request(request) click to toggle source
# File lib/aliyun_sms_ruby/client.rb, line 12
def send_request request
  q_without_sig = build_url(request.get_params)
  q_full= "Signature=#{sign(q_without_sig)}&#{q_without_sig}"

  response = Faraday.get "#{SERVICE_URL}?#{q_full}"
  if response != 200 && defined? Rails
    Rails.logger.error(response.body)
  end
  response
end

Private Instance Methods

build_url(hash) click to toggle source
# File lib/aliyun_sms_ruby/client.rb, line 25
def build_url(hash)
  hash.map{|k,v|"#{encode(k.to_s)}=#{encode(v.to_s)}"}.sort.join('&')
end
encode(str) click to toggle source
# File lib/aliyun_sms_ruby/client.rb, line 29
def encode(str)
  ERB::Util.url_encode str
end
sign(str) click to toggle source
# File lib/aliyun_sms_ruby/client.rb, line 33
def sign(str)
  str = "GET&#{encode('/')}&#{encode(str)}"
  ret = OpenSSL::HMAC.digest('sha1', "#{AliyunSmsRuby.configuration.access_key_secret}&", str)
  ret = Base64.encode64(ret)
  encode(ret.chomp)
end