Module: TencentSimpleSms

Defined in:
lib/tencent_simple_sms.rb,
lib/tencent_simple_sms/sms.rb,
lib/tencent_simple_sms/config.rb,
lib/tencent_simple_sms/version.rb

Defined Under Namespace

Classes: Config, Error

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.configure(&block) ⇒ Object



15
16
17
# File 'lib/tencent_simple_sms.rb', line 15

def configure(&block)
  Config.configure(&block)
end

.http_post(url, postdata) ⇒ Object



21
22
23
# File 'lib/tencent_simple_sms/sms.rb', line 21

def http_post(url, postdata)
  Net::HTTP.post_form(URI(url),postdata).body
end

.params_to_string(params) ⇒ Object



26
27
28
# File 'lib/tencent_simple_sms/sms.rb', line 26

def params_to_string(params)
  params.sort.map { |item| item.join('=') }.join('&')
end

.sender(mobiles, templ_id) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/tencent_simple_sms/sms.rb', line 3

def sender(mobiles, templ_id)
  request = {}
  mobiles.each_with_index do |m, i|
    request["PhoneNumberSet.#{i}"] = "+86#{m}"
  end
  request['Action'] = 'SendSms'
  request['Region'] = ''
  request["Version"] = '2019-07-11'
  request["TemplateID"] = templ_id
  request['Sign'] = Config.sign
  request['SmsSdkAppid'] = Config.app_id
  request['Timestamp'] = Time.now.to_i
  request['Nonce'] = SecureRandom.random_number.to_s.slice(-10..-1)
  request['SecretId'] = Config.secret_id
  request['Signature'] = sig(request)
  http_post('https://sms.tencentcloudapi.com', request)
end

.sig(request) ⇒ Object



30
31
32
33
34
35
# File 'lib/tencent_simple_sms/sms.rb', line 30

def sig(request)
  signature = params_to_string(request)
  signature = "POSTsms.tencentcloudapi.com/?" + signature
  digest = OpenSSL::Digest.new('sha1')
  Base64.encode64(OpenSSL::HMAC.digest(digest, Config.secret_key, signature))
end