module Alidayu

Constants

VERSION

Attributes

access_key_id[RW]
access_key_secrete[RW]

Public Class Methods

get_signature(params) click to toggle source
# File lib/alidayu.rb, line 30
def get_signature params

  stander_string = generate_stander_string(params)
  construct_string = 'GET&' + CGI.escape('/') + '&' + CGI.escape(stander_string)
  digest = OpenSSL::Digest.new('sha1')
  key = access_key_secrete + '&'
  Base64.encode64(OpenSSL::HMAC.digest(digest, key, construct_string)).gsub(/\n/, '')
end
send_text_message(params) click to toggle source

required params

PhoneNumbers SignName TemplateCode TemplateParam

# File lib/alidayu.rb, line 20
def send_text_message params
  params.map { |key, value| params[key] = value.to_json.to_s if value.class.to_s == Hash.name }
  params.merge!(
      {Action: 'SendSms',
       Version: '2017-05-25',
       RegionId: 'cn-hangzhou'})
  JSON.parse request params

end

Private Class Methods

create_params(params) click to toggle source
# File lib/alidayu.rb, line 60
def create_params params
  rest_params = {
      AccessKeyId: access_key_id,
      Timestamp: get_utc_timestamp,
      SignatureMethod: 'HMAC-SHA1',
      SignatureVersion: '1.0',
      SignatureNonce: get_nonce,
      Format: "JSON"
  }
  params.merge rest_params
end
generate_stander_string(params) click to toggle source
# File lib/alidayu.rb, line 41
def generate_stander_string params
  str = ''
  keys = params.keys.sort
  keys.each do |key|
    str += "#{CGI.escape(key.to_s)}=#{CGI.escape(params[key.to_sym])}&"
  end
  str.gsub(/\&$/, '')
end
get_nonce() click to toggle source
# File lib/alidayu.rb, line 56
def get_nonce
  SecureRandom.uuid
end
get_request_url(params) click to toggle source
# File lib/alidayu.rb, line 72
def get_request_url params
  require_host = 'http://dysmsapi.aliyuncs.com/?'

  final_params = create_params params
  signature = get_signature final_params
  final_params.merge!({Signature: signature})
  final_params.map do |key, value|
    require_host += "#{CGI.escape(key.to_s)}=#{CGI.escape(value)}&"
  end
  require_host.gsub(/\&$/, '')
end
get_utc_timestamp() click to toggle source
# File lib/alidayu.rb, line 52
def get_utc_timestamp
  Time.now.utc.strftime("%Y-%m-%dT%H:%M:%SZ")
end
request(params) click to toggle source
# File lib/alidayu.rb, line 84
def request params
  url = URI(get_request_url(params))
  response = Net::HTTP.get_response(url)
  response.body
end