aliyun_sms_ruby 0.0.1 → 0.0.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0395b6891ae2dc51b1ad869859ef9541e2f03180f265c284af1b0a430c09f8f6'
4
- data.tar.gz: ebe2892b45bef8c9d5533046b44fffb4a6651b508335053750eb3283b8e60cf2
3
+ metadata.gz: 04b9443bcc94bde6a6a76a53b3514396f5534dbfa7d8d6b4a1fd92d63979d922
4
+ data.tar.gz: 31e66adb1673f8408487bc9abda71c289aae370a017b1d917e0323cc8df69f36
5
5
  SHA512:
6
- metadata.gz: 8c169a24ec3083508a3588ac01f0d1e58359e18ce65dac108239f61a3994e6cd31aa83562cd2f5bd511a8c30b86f2429aeced12e63b1ebc829abdafbfe586301
7
- data.tar.gz: 1761dd1bd83ffa796b3d8b8446e8eb130323104167b71b85e23f0fd8bfd98c02c2cadbd6019203d423e38533eb0ad9acbc6fb575d6a42816c879d44db04bcc00
6
+ metadata.gz: dc0ec467f5bd494f7b721d2e84be02642576334282fa5e379746f74c050d836f2af5ac937f22c2fb870d200408865ea8132ae303da042fb26fe723f102fea4c6
7
+ data.tar.gz: b6c0db9d718bb6f52bf71f3b6492e728219994ae6803a1b486d418085f10010689078b75da6e477da5ded671ed0979dda6ac93657e43a9d94228393830f515fb
data/README.md ADDED
File without changes
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'aliyun_sms_ruby/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "aliyun_sms_ruby"
8
+ spec.version = AliyunSmsRuby::VERSION
9
+ spec.authors = ["Zkun"]
10
+ spec.email = ["zhukun6150909@gmail.com"]
11
+
12
+ spec.summary = %q{Aliyun sms ruby sdk}
13
+ spec.description = %q{Aliyun sms ruby sdk}
14
+ spec.homepage = ""
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
+ f.match(%r{^(test|spec|features)/})
19
+ end
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_dependency "uuid", ">=2.0"
25
+ spec.add_dependency "faraday", "~> 1.8"
26
+
27
+ spec.add_development_dependency "bundler", "> 1.14"
28
+ spec.add_development_dependency "rake", ">= 12.3.3"
29
+ spec.add_development_dependency "rspec", ">= 3.0"
30
+ end
@@ -0,0 +1,39 @@
1
+ require 'erb'
2
+ require 'uuid'
3
+ require 'json'
4
+ require 'openssl'
5
+ require 'base64'
6
+ require 'faraday'
7
+
8
+ module AliyunSmsRuby
9
+ class Client
10
+ SERVICE_URL = "http://dysmsapi.aliyuncs.com/"
11
+
12
+ def send_request request
13
+ q_without_sig = build_url(request.get_params)
14
+ q_full= "Signature=#{sign(q_without_sig)}&#{q_without_sig}"
15
+
16
+ response = Faraday.get "#{SERVICE_URL}?#{q_full}"
17
+ if response != 200 && defined? Rails
18
+ Rails.logger.error(response.body)
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def build_url(hash)
25
+ hash.map{|k,v|"#{encode(k.to_s)}=#{encode(v.to_s)}"}.sort.join('&')
26
+ end
27
+
28
+ def encode(str)
29
+ ERB::Util.url_encode str
30
+ end
31
+
32
+ def sign(str)
33
+ str = "GET&#{encode('/')}&#{encode(str)}"
34
+ ret = OpenSSL::HMAC.digest('sha1', "#{AliyunSmsRuby.configuration.access_key_secret}&", str)
35
+ ret = Base64.encode64(ret)
36
+ encode(ret.chomp)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,17 @@
1
+ module AliyunSmsRuby
2
+ class Configuration
3
+ attr_accessor :access_key_secret, :access_key_id, :format, :region_id,
4
+ :sign_name, :signature_method, :signature_version, :version
5
+
6
+ def initialize
7
+ @access_key_secret = ''
8
+ @access_key_id = ''
9
+ @format = ''
10
+ @region_id = ''
11
+ @sign_name = ''
12
+ @signature_method = ''
13
+ @signature_version = ''
14
+ @version = ''
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,44 @@
1
+ module AliyunSmsRuby
2
+ module Request
3
+ class BaseRequest
4
+
5
+ def get_params
6
+ custom_params.merge intrinsic_params
7
+ end
8
+
9
+ protected
10
+
11
+ def action
12
+ ""
13
+ end
14
+
15
+ def custom_params
16
+ {}
17
+ end
18
+
19
+ def intrinsic_params
20
+ configuration = AliyunSmsRuby.configuration
21
+ {
22
+ :AccessKeyId => configuration.access_key_id,
23
+ :SignName => configuration.sign_name,
24
+ :Format => configuration.format,
25
+ :RegionId => configuration.region_id,
26
+ :SignatureMethod => configuration.signature_method,
27
+ :SignatureVersion => configuration.signature_version,
28
+ :Timestamp => timestamp,
29
+ :SignatureNonce => nonce,
30
+ :Action => action,
31
+ :Version => configuration.version
32
+ }
33
+ end
34
+
35
+ def timestamp
36
+ Time.now.utc.strftime("%FT%TZ")
37
+ end
38
+
39
+ def nonce
40
+ UUID.generate
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,31 @@
1
+ require 'aliyun_sms_ruby/request/base_request'
2
+
3
+ module AliyunSmsRuby
4
+ module Request
5
+ class MessageGlobalRequest < BaseRequest
6
+ attr_accessor :mobile, :text, :from, :type, :optional_params
7
+
8
+ def initialize(mobile, text, from, type, optional_params = nil)
9
+ self.mobile = mobile
10
+ self.text = text
11
+ self.from = from
12
+ self.type = type
13
+ self.optional_params = optional_params || {}
14
+ end
15
+
16
+ def action
17
+ 'SendMessageToGlobe'.freeze
18
+ end
19
+
20
+ def custom_params
21
+ {
22
+ Message: self.text,
23
+ To: self.mobile,
24
+ From: self.from,
25
+ Type: self.type
26
+ }.merge!(self.optional_params)
27
+ end
28
+ end
29
+ end
30
+ end
31
+
@@ -0,0 +1,30 @@
1
+ require 'aliyun_sms_ruby/request/base_request'
2
+
3
+ module AliyunSmsRuby
4
+ module Request
5
+ class MessageRequest < BaseRequest
6
+ attr_accessor :mobile, :template_code, :template_param, :optional_params
7
+
8
+ def initialize(mobile, template_code, template_param, optional_params = nil)
9
+ self.mobile = mobile
10
+ self.template_code = template_code
11
+ self.template_param = template_param
12
+ self.optional_params = optional_params || {}
13
+ end
14
+
15
+ def action
16
+ "SendSms".freeze
17
+ end
18
+
19
+ def custom_params
20
+ self.template_param = self.template_param.to_json if self.template_param.is_a?(Hash)
21
+
22
+ {
23
+ :PhoneNumbers => self.mobile,
24
+ :TemplateCode => self.template_code,
25
+ :TemplateParam => self.template_param.to_s,
26
+ }.merge!(self.optional_params)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,8 @@
1
+ require 'aliyun_sms_ruby/request/base_request'
2
+
3
+ module AliyunSmsRuby
4
+ module Request
5
+ class QueryRequest < BaseRequest
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ module AliyunSmsRuby
2
+ VERSION = "0.0.2"
3
+ end
@@ -0,0 +1,33 @@
1
+ require 'aliyun_sms_ruby/configuration'
2
+ require 'aliyun_sms_ruby/client'
3
+ require 'aliyun_sms_ruby/request/message_request'
4
+ require 'aliyun_sms_ruby/request/message_global_request'
5
+
6
+ module AliyunSmsRuby
7
+ class << self
8
+ attr_writer :configuration
9
+
10
+ def configuration
11
+ @configuration ||= Configuration.new
12
+ end
13
+
14
+ def configure
15
+ yield(configuration)
16
+ end
17
+
18
+ def send_message(mobile, template_code, template_param, optional_params = nil)
19
+ request = AliyunSmsRuby::Request::MessageRequest.new(mobile, template_code, template_param, optional_params = nil)
20
+ client.send_request request
21
+ end
22
+
23
+ def send_global_message(mobile, text, from, type, optional_params = nil)
24
+ request = AliyunSmsRuby::Request::MessageGlobalRequest.new(mobile, text, from, type, optional_params = nil)
25
+ client.send_request request
26
+ end
27
+
28
+ private
29
+ def client
30
+ @client ||= AliyunSmsRuby::Client.new
31
+ end
32
+ end
33
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aliyun_sms_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zkun
@@ -86,7 +86,17 @@ email:
86
86
  executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
- files: []
89
+ files:
90
+ - README.md
91
+ - aliyun_sms_ruby.gemspec
92
+ - lib/aliyun_sms_ruby.rb
93
+ - lib/aliyun_sms_ruby/client.rb
94
+ - lib/aliyun_sms_ruby/configuration.rb
95
+ - lib/aliyun_sms_ruby/request/base_request.rb
96
+ - lib/aliyun_sms_ruby/request/message_global_request.rb
97
+ - lib/aliyun_sms_ruby/request/message_request.rb
98
+ - lib/aliyun_sms_ruby/request/query_request.rb
99
+ - lib/aliyun_sms_ruby/version.rb
90
100
  homepage: ''
91
101
  licenses:
92
102
  - MIT