class SendCloud::SMS

Public Class Methods

auth(user, api_key) click to toggle source
# File lib/sendcloud-sms.rb, line 14
def self.auth(user, api_key)
  @user = user
  @api_key = api_key
end
load!(file, environment) click to toggle source
# File lib/sendcloud-sms.rb, line 9
def self.load!(file, environment)
  config = YAML.load_file(file)
  self.auth(config[environment.to_s]['user'], config[environment.to_s]['api_key'])
end
send(template, phone, vars) click to toggle source
# File lib/sendcloud-sms.rb, line 43
def self.send(template, phone, vars)
  signature = sign(template, phone, vars)
  response = RestClient.post 'http://sendcloud.sohu.com/smsapi/send?',
                             smsUser: @user,
                             templateId: template,
                             msgType: 0,
                             phone: (phone.is_a?Array) ? phone.join(',') : phone,
                             vars: vars.to_json,
                             signature: signature
  JSON.parse(response.to_s)['statusCode']
end
send_voice(phone, code) click to toggle source
# File lib/sendcloud-sms.rb, line 55
def self.send_voice(phone, code)
  signature = sign_voice(phone, code)
  response = RestClient.post 'http://sendcloud.sohu.com/smsapi/sendVoice?',
                             smsUser: @user,
                             phone: phone,
                             code: code,
                             signature: signature
  JSON.parse(response.to_s)['statusCode']
end
sign(template, phone, vars) click to toggle source
# File lib/sendcloud-sms.rb, line 19
def self.sign(template, phone, vars)
  param_str = "#{@api_key}&"
  {
      smsUser: @user,
      templateId: template,
      msgType: 0,
      phone: (phone.is_a?Array) ? phone.join(',') : phone,
      vars: vars.to_json
  }.sort {|a, b| a.to_s <=> b.to_s}.map { |item| param_str << "#{item[0]}=#{item[1]}&" }
  param_str << @api_key
  Digest::MD5.new.update(param_str)
end
sign_voice(phone, code) click to toggle source
# File lib/sendcloud-sms.rb, line 32
def self.sign_voice(phone, code)
  param_str = "#{@api_key}&"
  {
      smsUser: @user,
      phone: phone,
      code: code
  }.sort {|a, b| a.to_s <=> b.to_s}.map { |item| param_str << "#{item[0]}=#{item[1]}&" }
  param_str << @api_key
  Digest::MD5.new.update(param_str)
end