huaweicloud-sms 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +14 -0
  3. data/lib/huaweicloud-sms.rb +50 -2
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a0f0740e91d2cbf47f1fa4770b23ab76fa82339b2996808aef0a90a2e4afc50e
4
- data.tar.gz: ac4301a59832f0d7ff682ff42ad33034c282b7ccc8c7bc4f78694c41e7987f15
3
+ metadata.gz: dd70cd3b5c18259cfbb1c9beab09882a28f86be006b2871dbd293bc6587505a0
4
+ data.tar.gz: 976bc81070c7b1438dda2d25c6f84fd776972b08d1e22997bfec43f73f50f218
5
5
  SHA512:
6
- metadata.gz: '08ccbe42654ac154e8d2c1b9d59eb7beae7e2ad1907da29eec08ab17352be5f7b9088020dec01c966eea13b2c3a3aad186cdc8ecfda04afb086a719bddd5658a'
7
- data.tar.gz: 5067324e3006f3e007fbc75eae7347cbdaeeeb3e54a94f277294921a30419b342a25e1e2fc9f76746450dbbd7926dc4451de0d1a1b71b2c53362841bd2658b72
6
+ metadata.gz: 1fa0c13c5f44cd38edf0e31b5fb4689ccbbb076de9e12d9ed515be1fd8c01a86bf74df58118ec9a905a6033b81c5ad35817dab48dc09fd63e7f3a542c98c2919
7
+ data.tar.gz: 9dd35cf20c34d244417cd07c310b4b8ba7517980f1a4e900153094102e8aca5f52f666e0ad3d398abcb48367d892e085ed931ddef066cddafe4cd0e14054bc56
data/README.md CHANGED
@@ -0,0 +1,14 @@
1
+ ## Installation
2
+ 1. Put the following line into the Gemfile of your project
3
+ ```
4
+ gem 'huaweicloud-sms'
5
+ ```
6
+
7
+ 2. Install the gems in Gemfile
8
+ ```
9
+ $ bundle install
10
+ ```
11
+
12
+ ## Usage
13
+ 1.
14
+
@@ -1,5 +1,53 @@
1
- class HuaweicloudSms
2
- def initialize()
1
+ require 'securerandom'
2
+ require 'digest'
3
+ require 'base64'
4
+ require 'net/http'
5
+ require 'uri'
6
+ require 'active_support/all'
3
7
 
8
+ module HuaweicloudSms
9
+ class Base
10
+ def initialize(app_key, app_secret, url)
11
+ @app_key = app_key
12
+ @app_secret = app_secret
13
+ @url = url
14
+ end
15
+
16
+ def send(sender, receiver, template_id, template_params, signature)
17
+ url = URI.parse(@url)
18
+ request = Net::HTTP::Post.new(url.path)
19
+
20
+ # template_param needs to be an array of strings
21
+ template_param = '[' + template_params.map{ |p| "\"#{p}\"" }.join(',') + ']'
22
+
23
+ form_data = { 'from' => sender,
24
+ 'to' => receiver,
25
+ 'templateId' => template_id,
26
+ 'templateParas' => template_param,
27
+ 'statusCallback' => '',
28
+ 'signature' => signature
29
+ }
30
+
31
+ request.set_form_data(form_data)
32
+
33
+ request['Authorization'] = 'WSSE realm="SDP",profile="UsernameToken",type="Appkey"'
34
+ request['X-WSSE'] = build_wss_header(@app_key, @app_secret)
35
+
36
+ response = Net::HTTP.start(url.host, url.port, use_ssl: url.scheme == 'https') do |http|
37
+ http.request(request)
38
+ end
39
+
40
+ { code: response.code, body: response.body }
41
+ end
42
+
43
+ private
44
+
45
+ def build_wss_header(app_key, app_secret)
46
+ now = Time.now.utc.iso8601
47
+ nonce = SecureRandom.uuid.gsub('-', '')
48
+ digest = Digest::SHA256.hexdigest(nonce + now + app_secret)
49
+ digest_base64 = Base64.strict_encode64(digest)
50
+ "UsernameToken Username=\"#{app_key}\",PasswordDigest=\"#{digest_base64}\",Nonce=\"#{nonce}\",Created=\"#{now}\""
51
+ end
4
52
  end
5
53
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: huaweicloud-sms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yi Zhang