china_sms 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -1
- data/lib/china_sms/service/tui3.rb +3 -1
- data/lib/china_sms/version.rb +1 -1
- data/spec/service/tui3_spec.rb +13 -3
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0682a63cc1c257496c8e30315a28f8b563926fce
|
4
|
+
data.tar.gz: 4304a39419ef792e4aab1027a1ab4bd9ecce173e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7c3af2e58182cdf2d478d5e123a7a783075e4bb7aaee4e1e0f43ef3996fbb2cc3c06dbab30fa849cb332c8a5b930d3fa463697e013bf26872a0bec66c4a0d02b
|
7
|
+
data.tar.gz: c87be6268b368e0934fad98d9b0a989af38323610446daccfadaa2bb08f78918e3fa792be2eae3f59c3665b89d7dd4d77575e89ec1010b03386a3a21339774a7
|
data/README.md
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
所有短信平台都禁止发送私人短信,并要求在短信内容末尾加上签名后缀,如【19屋】
|
8
8
|
|
9
|
-
* [推立方](http://tui3.com/) 专注于注册校验码等实时应用,需要[配置内容格式和签名](http://www.tui3.com/Members/smsconfigv2/)
|
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
12
|
|
@@ -33,3 +33,10 @@
|
|
33
33
|
ChinaSMS.use :tui3, username: 'YOUR_USERNAME', password: 'YOUR_PASSWORD'
|
34
34
|
ChinaSMS.to '13912345678', '[Test]China SMS gem has been released.'
|
35
35
|
```
|
36
|
+
|
37
|
+
## 安全性
|
38
|
+
|
39
|
+
在安全性方面,很多接口都是使用用户登录明文密码,推立方 和 短信宝 要好一些。
|
40
|
+
|
41
|
+
* **推立方**,不使用登录密码,而是由系统自动生成一长串 API_KEY,专用于接口调用
|
42
|
+
* **短信宝**,使用登录密码,但在调用时要先转成 MD5
|
@@ -9,7 +9,9 @@ module ChinaSMS
|
|
9
9
|
def to(phone, content, options)
|
10
10
|
phones = Array(phone).join(',')
|
11
11
|
res = Net::HTTP.post_form(URI.parse(URL), k: options[:password], t: phones, c: content, p: 1, r: 'json')
|
12
|
-
|
12
|
+
body = res.body
|
13
|
+
body = "{\"err_code\": 2, \"err_msg\":\"非法apikey:#{options[:password]}\"}" if body == 'invalid parameters'
|
14
|
+
result JSON[body]
|
13
15
|
end
|
14
16
|
|
15
17
|
def result(body)
|
data/lib/china_sms/version.rb
CHANGED
data/spec/service/tui3_spec.rb
CHANGED
@@ -3,11 +3,10 @@ require 'spec_helper'
|
|
3
3
|
|
4
4
|
describe "Tui3" do
|
5
5
|
describe "#to" do
|
6
|
-
let(:
|
7
|
-
let(:password) { '666666' }
|
6
|
+
let(:password) { '50e7a3smdl521942ea38dnf4b58c5e6b' }
|
8
7
|
let(:url) { "http://tui3.com/api/send/" }
|
9
8
|
let(:content) { '推立方测试:深圳 Rubyist 活动时间变更到明天下午 7:00,请留意。' }
|
10
|
-
subject { ChinaSMS::Service::Tui3.to phone, content,
|
9
|
+
subject { ChinaSMS::Service::Tui3.to phone, content, password: password }
|
11
10
|
describe 'single phone' do
|
12
11
|
let(:phone) { '13928452841' }
|
13
12
|
before do
|
@@ -31,5 +30,16 @@ describe "Tui3" do
|
|
31
30
|
its([:code]) { should eql 0 }
|
32
31
|
its([:message]) { should eql "操作成功!" }
|
33
32
|
end
|
33
|
+
context 'invalid key' do
|
34
|
+
let(:phone) { '13928452841' }
|
35
|
+
let(:password) { '666666' }
|
36
|
+
before do
|
37
|
+
stub_request(:post, url).
|
38
|
+
with(body: {k: password, t: phone, c: content, p: '1', r: 'json'}).
|
39
|
+
to_return(body: 'invalid parameters' )
|
40
|
+
end
|
41
|
+
its([:success]) { should eql false }
|
42
|
+
its([:message]) { should eql "非法apikey:#{password}" }
|
43
|
+
end
|
34
44
|
end
|
35
45
|
end
|
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
|
+
version: 0.0.4
|
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-
|
11
|
+
date: 2013-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|