china_sms 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0682a63cc1c257496c8e30315a28f8b563926fce
4
- data.tar.gz: 4304a39419ef792e4aab1027a1ab4bd9ecce173e
3
+ metadata.gz: 97e1d464107001de01cf62059455990cea08a5b6
4
+ data.tar.gz: 3b9f52a9340f4e972e89bff6645d08e9591a35fe
5
5
  SHA512:
6
- metadata.gz: 7c3af2e58182cdf2d478d5e123a7a783075e4bb7aaee4e1e0f43ef3996fbb2cc3c06dbab30fa849cb332c8a5b930d3fa463697e013bf26872a0bec66c4a0d02b
7
- data.tar.gz: c87be6268b368e0934fad98d9b0a989af38323610446daccfadaa2bb08f78918e3fa792be2eae3f59c3665b89d7dd4d77575e89ec1010b03386a3a21339774a7
6
+ metadata.gz: 6a99f5f6d51fc05ba0aeaf07c9f3aae9d3d0eb20895eb01d694ed75c62dcc9a6932071bdab82d9e846564e4ae507efb7e59050e6e41957276bfa6018cd2a0d0f
7
+ data.tar.gz: 4f17931a90aeac83e78e108a1bb323dc9f5ccd3fe5245de265afb6043bc47dc4ef47d3ab6542f9246c352bc48c21cb37bae9940483c647211fb97a191d820d8a
data/README.md CHANGED
@@ -9,6 +9,7 @@
9
9
  * [推立方](http://tui3.com/) 专注于注册校验码等实时应用,需要[配置内容格式和签名](http://www.tui3.com/Members/smsconfigv2/),会自动在短信加上签名后缀。短信计数:移动/联通每条短信的最大长度为64字符,电信每条最大长度60字符(半角、全角各算一个)。超过该长度后,短信后面自动增加分页信息(x/y),此时,每条短信最大长度需要再减3(不超过10页)
10
10
  * [短信宝](http://www.smsbao.com/)
11
11
  * [畅友网络](http://www.chanyoo.cn/) 群发短信需要半小时左右的时间审核,星期五等繁忙时段会有几个小时的延时,不适合发送注册校验码等实时短信,单次最多发送500个号码
12
+ * [亿美软通](http://www.emay.cn/)
12
13
 
13
14
  非常感谢 [推立方](http://tui3.com/) 为 [19屋活动平台](http://19wu.com) 提供短信赞助。
14
15
 
@@ -29,11 +30,19 @@
29
30
  ## 使用
30
31
 
31
32
  ```ruby
32
- # 支持 :tui3, :smsbao, chanyoo 短信接口
33
+ # 支持 :tui3, :smsbao, chanyoo, emay 短信接口
33
34
  ChinaSMS.use :tui3, username: 'YOUR_USERNAME', password: 'YOUR_PASSWORD'
34
35
  ChinaSMS.to '13912345678', '[Test]China SMS gem has been released.'
35
36
  ```
36
37
 
38
+ ## 贡献
39
+
40
+ ```bash
41
+ git clone git@github.com:saberma/china_sms.git
42
+ cd china_sms
43
+ bundle console # 请不要使用 irb,可能会有依赖问题
44
+ ```
45
+
37
46
  ## 安全性
38
47
 
39
48
  在安全性方面,很多接口都是使用用户登录明文密码,推立方 和 短信宝 要好一些。
@@ -7,9 +7,11 @@ end
7
7
 
8
8
  module ChinaSMS
9
9
  extend self
10
+
10
11
  def username
11
12
  @username
12
13
  end
14
+
13
15
  def password
14
16
  @password
15
17
  end
@@ -24,7 +26,12 @@ module ChinaSMS
24
26
  @service.to receiver, content, username: @username, password: @password if @service
25
27
  end
26
28
 
29
+ def get
30
+ @service.get username: @username, password: @password if @service
31
+ end
32
+
27
33
  def clear
28
34
  @service = @username = @password = nil
29
35
  end
36
+
30
37
  end
@@ -3,7 +3,9 @@ module ChinaSMS
3
3
  module Service
4
4
  module Chanyoo
5
5
  extend self
6
+
6
7
  URL = "http://api.chanyoo.cn/utf8/interface/send_sms.aspx"
8
+
7
9
  def to(phone, content, options)
8
10
  phones = Array(phone).join(',')
9
11
  res = Net::HTTP.post_form(URI.parse(URL), username: options[:username], password: options[:password], receiver: phones, content: content)
@@ -19,6 +21,7 @@ module ChinaSMS
19
21
  message: message.force_encoding("UTF-8")
20
22
  }
21
23
  end
24
+
22
25
  end
23
26
  end
24
27
  end
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+ module ChinaSMS
3
+ module Service
4
+ module Emay
5
+ extend self
6
+
7
+ SEND_URL = "http://sdkhttp.eucp.b2m.cn/sdkproxy/sendsms.action"
8
+ GET_URL = "http://sdkhttp.eucp.b2m.cn/sdkproxy/getmo.action"
9
+
10
+ def to(phone, content, options)
11
+ phones = Array(phone).join(',')
12
+ res = Net::HTTP.post_form(URI.parse(SEND_URL), cdkey: options[:username], password: options[:password], phone: phones, message: content)
13
+ result res.body
14
+ end
15
+
16
+ def get(options)
17
+ # res = Net::HTTP.post_form(URI.parse(GET_URL), cdkey: options[:username], password: options[:password])
18
+ url = GET_URL + "?cdkey=#{options[:username]}&password=#{options[:password]}"
19
+ res = Net::HTTP.get(URI.parse(url))
20
+ res.body
21
+ end
22
+
23
+ def result(body)
24
+ code = body.match(/.+error>(.+)\<\/error/)[1]
25
+ {
26
+ success: (code.to_i >= 0),
27
+ code: code
28
+ }
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -3,7 +3,9 @@ module ChinaSMS
3
3
  module Service
4
4
  module Smsbao
5
5
  extend self
6
+
6
7
  URL = "http://api.smsbao.com/sms"
8
+
7
9
  MESSAGES = {
8
10
  '0' => '短信发送成功',
9
11
  '30' => '密码错误',
@@ -28,6 +30,7 @@ module ChinaSMS
28
30
  message: MESSAGES[code]
29
31
  }
30
32
  end
33
+
31
34
  end
32
35
  end
33
36
  end
@@ -5,7 +5,9 @@ module ChinaSMS
5
5
  module Service
6
6
  module Tui3 # http://tui3.com/
7
7
  extend self
8
+
8
9
  URL = "http://tui3.com/api/send/"
10
+
9
11
  def to(phone, content, options)
10
12
  phones = Array(phone).join(',')
11
13
  res = Net::HTTP.post_form(URI.parse(URL), k: options[:password], t: phones, c: content, p: 1, r: 'json')
@@ -21,6 +23,7 @@ module ChinaSMS
21
23
  message: body['err_msg']
22
24
  }
23
25
  end
26
+
24
27
  end
25
28
  end
26
29
  end
@@ -1,3 +1,3 @@
1
1
  module ChinaSMS
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -7,12 +7,15 @@ describe "ChinaSMS" do
7
7
  let(:password) { '666666' }
8
8
  let(:phone) { '13928452841' }
9
9
  let(:content) { '活动通知:深圳 Rubyist 活动时间变更到明天下午 7:00,请留意。' }
10
+
10
11
  context 'with service' do
11
12
  before { ChinaSMS.use service, username: username, password: password }
13
+
12
14
  describe "#use" do
13
15
  subject { ChinaSMS }
14
16
  its(:username) { should eql "saberma"}
15
17
  end
18
+
16
19
  describe "#to" do
17
20
  subject { ChinaSMS.to(phone, content) }
18
21
  before { ChinaSMS::Service::Tui3.stub(:to).with(phone, content, username: username, password: password).and_return(success: true, code: 0) }
@@ -20,12 +23,16 @@ describe "ChinaSMS" do
20
23
  its([:code]) { should eql 0 }
21
24
  end
22
25
  end
26
+
23
27
  context 'without service' do
24
28
  before { ChinaSMS.clear }
29
+
25
30
  describe '#to' do
26
31
  it 'should be ignore' do
27
32
  ChinaSMS.to(phone, content)
28
33
  end
29
34
  end
35
+
30
36
  end
37
+
31
38
  end
@@ -2,19 +2,23 @@
2
2
  require 'spec_helper'
3
3
 
4
4
  describe "Chanyoo" do
5
+
5
6
  describe "#to" do
6
7
  let(:username) { 'saberma' }
7
8
  let(:password) { '666666' }
8
9
  let(:url) { "http://api.chanyoo.cn/utf8/interface/send_sms.aspx" }
9
10
  let(:content) { '【畅友短信测试】深圳 Rubyist 活动时间变更到周六下午 3:00,请留意。【19屋】' }
10
11
  subject { ChinaSMS::Service::Chanyoo.to phone, content, username: username, password: password }
12
+
11
13
  describe 'single phone' do
12
14
  let(:phone) { '13928452841' }
15
+
13
16
  before do
14
17
  stub_request(:post, url).
15
18
  with(body: {username: username, password: password, receiver: phone, content: content}).
16
19
  to_return(body: '<?xml version="1.0" encoding="utf-8" ?><response><result>50</result><message>短信发送成功</message></response>')
17
20
  end
21
+
18
22
  its([:success]) { should eql true }
19
23
  its([:code]) { should eql '50' }
20
24
  its([:message]) { should eql "短信发送成功" }
@@ -22,14 +26,17 @@ describe "Chanyoo" do
22
26
 
23
27
  describe 'multiple phones' do
24
28
  let(:phone) { ['13928452841', '13590142385'] }
29
+
25
30
  before do
26
31
  stub_request(:post, url).
27
32
  with(body: {username: username, password: password, receiver: phone.join(','), content: content}).
28
33
  to_return(body: '<?xml version="1.0" encoding="utf-8" ?><response><result>50</result><message>短信发送成功</message></response>')
29
34
  end
35
+
30
36
  its([:success]) { should eql true }
31
37
  its([:code]) { should eql '50' }
32
38
  its([:message]) { should eql "短信发送成功" }
33
39
  end
40
+
34
41
  end
35
42
  end
@@ -0,0 +1,27 @@
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+
4
+ describe "Emay" do
5
+
6
+ describe "#to" do
7
+ let(:username) { 'YOUR_CDKEY' }
8
+ let(:password) { 'YOUR_PASSWORD' }
9
+ let(:url) { "http://sdkhttp.eucp.b2m.cn/sdkproxy/sendsms.action" }
10
+ let(:content) { '测试内容' }
11
+ subject { ChinaSMS::Service::Emay.to phone, content, username: username, password: password }
12
+
13
+ describe 'single phone' do
14
+ let(:phone) { '13552241639' }
15
+
16
+ before do
17
+ stub_request(:post, url).
18
+ with(body: {cdkey: username, password: password, phone: phone, message: content}).
19
+ to_return(body: '<?xml version="1.0" encoding="UTF-8" ?><error>0</error><message></message></response>')
20
+ end
21
+
22
+ its([:success]) { should eql true }
23
+ its([:code]) { should eql '0' }
24
+ end
25
+ end
26
+
27
+ end
@@ -8,13 +8,16 @@ describe "Smsbao" do
8
8
  let(:url) { "http://api.smsbao.com/sms" }
9
9
  let(:content) { '【短信宝测试】深圳 Rubyist 活动时间变更到明天下午 7:00,请留意。【19屋】' }
10
10
  subject { ChinaSMS::Service::Smsbao.to phone, content, username: username, password: password }
11
+
11
12
  describe 'single phone' do
12
13
  let(:phone) { '13928452841' }
14
+
13
15
  before do
14
16
  stub_request(:post, url).
15
17
  with(body: {u: username, p: Digest::MD5.hexdigest(password), m: phone, c: content}).
16
18
  to_return(body: '0')
17
19
  end
20
+
18
21
  its([:success]) { should eql true }
19
22
  its([:code]) { should eql '0' }
20
23
  its([:message]) { should eql "短信发送成功" }
@@ -22,11 +25,13 @@ describe "Smsbao" do
22
25
 
23
26
  describe 'multiple phones' do
24
27
  let(:phone) { ['13928452841', '13590142385'] }
28
+
25
29
  before do
26
30
  stub_request(:post, url).
27
31
  with(body: {u: username, p: Digest::MD5.hexdigest(password), m: phone.join(','), c: content}).
28
32
  to_return(body: '0')
29
33
  end
34
+
30
35
  its([:success]) { should eql true }
31
36
  its([:code]) { should eql '0' }
32
37
  its([:message]) { should eql "短信发送成功" }
@@ -7,13 +7,16 @@ describe "Tui3" do
7
7
  let(:url) { "http://tui3.com/api/send/" }
8
8
  let(:content) { '推立方测试:深圳 Rubyist 活动时间变更到明天下午 7:00,请留意。' }
9
9
  subject { ChinaSMS::Service::Tui3.to phone, content, password: password }
10
+
10
11
  describe 'single phone' do
11
12
  let(:phone) { '13928452841' }
13
+
12
14
  before do
13
15
  stub_request(:post, url).
14
16
  with(body: {k: password, t: phone, c: content, p: '1', r: 'json'}).
15
17
  to_return(body: '{"err_code":0,"err_msg":"操作成功!","server_time":"2013-07-01 21:42:37"}' )
16
18
  end
19
+
17
20
  its([:success]) { should eql true }
18
21
  its([:code]) { should eql 0 }
19
22
  its([:message]) { should eql "操作成功!" }
@@ -21,25 +24,31 @@ describe "Tui3" do
21
24
 
22
25
  describe 'multiple phones' do
23
26
  let(:phone) { ['13928452841', '13590142385'] }
27
+
24
28
  before do
25
29
  stub_request(:post, url).
26
30
  with(body: {k: password, t: phone.join(','), c: content, p: '1', r: 'json'}).
27
31
  to_return(body: '{"err_code":0,"err_msg":"操作成功!","server_time":"2013-07-01 21:42:37"}' )
28
32
  end
33
+
29
34
  its([:success]) { should eql true }
30
35
  its([:code]) { should eql 0 }
31
36
  its([:message]) { should eql "操作成功!" }
32
37
  end
38
+
33
39
  context 'invalid key' do
34
40
  let(:phone) { '13928452841' }
35
41
  let(:password) { '666666' }
42
+
36
43
  before do
37
44
  stub_request(:post, url).
38
45
  with(body: {k: password, t: phone, c: content, p: '1', r: 'json'}).
39
46
  to_return(body: 'invalid parameters' )
40
47
  end
48
+
41
49
  its([:success]) { should eql false }
42
50
  its([:message]) { should eql "非法apikey:#{password}" }
43
51
  end
52
+
44
53
  end
45
54
  end
@@ -1,4 +1,7 @@
1
1
  # encoding: utf-8
2
+ require 'rubygems'
3
+ require 'bundler/setup'
4
+
2
5
  require 'webmock/rspec'
3
6
  require 'china_sms'
4
7
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: china_sms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - saberma
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-12 00:00:00.000000000 Z
11
+ date: 2013-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -82,11 +82,13 @@ files:
82
82
  - china_sms.gemspec
83
83
  - lib/china_sms.rb
84
84
  - lib/china_sms/service/chanyoo.rb
85
+ - lib/china_sms/service/emay.rb
85
86
  - lib/china_sms/service/smsbao.rb
86
87
  - lib/china_sms/service/tui3.rb
87
88
  - lib/china_sms/version.rb
88
89
  - spec/china_sms_spec.rb
89
90
  - spec/service/chanyoo_spec.rb
91
+ - spec/service/emay_spec.rb
90
92
  - spec/service/smsbao_spec.rb
91
93
  - spec/service/tui3_spec.rb
92
94
  - spec/spec_helper.rb
@@ -110,13 +112,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
112
  version: '0'
111
113
  requirements: []
112
114
  rubyforge_project:
113
- rubygems_version: 2.0.3
115
+ rubygems_version: 2.0.6
114
116
  signing_key:
115
117
  specification_version: 4
116
118
  summary: a gem for chinese people to send sms
117
119
  test_files:
118
120
  - spec/china_sms_spec.rb
119
121
  - spec/service/chanyoo_spec.rb
122
+ - spec/service/emay_spec.rb
120
123
  - spec/service/smsbao_spec.rb
121
124
  - spec/service/tui3_spec.rb
122
125
  - spec/spec_helper.rb