smster_ruby 0.0.3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/smster/sms/clickatell.rb +37 -0
- data/lib/smster/sms/nexmo.rb +29 -0
- data/lib/smster/sms/smsru.rb +6 -9
- data/lib/smster/sms.rb +15 -5
- data/lib/smster.rb +2 -0
- data/test/clickatell_test.rb +32 -0
- data/test/nexmo_test.rb +32 -0
- data/test/smsru_test.rb +12 -14
- data/test/test_helper.rb +10 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7cf21eba6341ca5a5c27688bc9736295b513c99
|
4
|
+
data.tar.gz: 6f8f7652396d06f93a8cde59b3a7f2d43cbcc964
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79993bad5368ffc2e85c5e121be8d34d539dd24e0525219a4d0a4be04c98c3f22c02c321e6dbc353a74d1062001f446c5547346d7fb32a2ea2e38618a11ec816
|
7
|
+
data.tar.gz: 9a45848e62e5e6cdfdedb182663450fb01b3f843ffbb0af11c1d5da5f6e8528a7497327c1cdf57d07642be11f7f5c23439721bb0a098d27697343021e323ff29
|
@@ -0,0 +1,37 @@
|
|
1
|
+
class Sms::Clickatell < Sms
|
2
|
+
private
|
3
|
+
|
4
|
+
def modify_params
|
5
|
+
self.to = to.gsub(/\D/, '').to_s
|
6
|
+
self.text = text.tr(' ', '+')
|
7
|
+
end
|
8
|
+
|
9
|
+
def send_request
|
10
|
+
code = Smster.configuration.clickatell_authorization_code
|
11
|
+
msg_params = { 'text' => text, 'to' => [to] }.to_json
|
12
|
+
|
13
|
+
start_request(msg_params, code)
|
14
|
+
end
|
15
|
+
|
16
|
+
def start_request(params, code)
|
17
|
+
RestClient.post(
|
18
|
+
'https://api.clickatell.com/rest/message',
|
19
|
+
params,
|
20
|
+
content_type: :json,
|
21
|
+
accept: :json,
|
22
|
+
'X-Version' => 1,
|
23
|
+
'Authorization' => "bearer #{code}"
|
24
|
+
)
|
25
|
+
rescue => e
|
26
|
+
e.response
|
27
|
+
end
|
28
|
+
|
29
|
+
def assign_attrs_by(response)
|
30
|
+
response = JSON.parse(response)
|
31
|
+
|
32
|
+
info = response['data']['message'][0]
|
33
|
+
|
34
|
+
self.status_message = info['error']
|
35
|
+
self.api_message_id = info['apiMessageId']
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class Sms::Nexmo < Sms
|
2
|
+
private
|
3
|
+
|
4
|
+
def modify_params
|
5
|
+
self.to = to.gsub(/\D/, '').to_s
|
6
|
+
self.text = text.tr(' ', '+')
|
7
|
+
end
|
8
|
+
|
9
|
+
def send_request
|
10
|
+
config = Smster.configuration
|
11
|
+
|
12
|
+
RestClient.post(
|
13
|
+
'https://rest.nexmo.com/sms/json',
|
14
|
+
text: text,
|
15
|
+
to: to,
|
16
|
+
content_type: :json,
|
17
|
+
from: name,
|
18
|
+
api_key: config.nexmo_key,
|
19
|
+
api_secret: config.nexmo_sekret
|
20
|
+
)
|
21
|
+
end
|
22
|
+
|
23
|
+
def assign_attrs_by(response)
|
24
|
+
json_response = JSON.parse(response)
|
25
|
+
|
26
|
+
self.status_message = json_response['messages'][0]['error-text']
|
27
|
+
self.api_message_id = json_response['messages'][0]['message-id']
|
28
|
+
end
|
29
|
+
end
|
data/lib/smster/sms/smsru.rb
CHANGED
@@ -1,14 +1,11 @@
|
|
1
1
|
class Sms::Smsru < Sms
|
2
2
|
private
|
3
3
|
|
4
|
-
def
|
5
|
-
|
6
|
-
|
7
|
-
response = send_request(text, phone)
|
8
|
-
generate_send_resonse(response)
|
4
|
+
def modify_params
|
5
|
+
self.to = to.gsub(/\D/, '')
|
9
6
|
end
|
10
7
|
|
11
|
-
def send_request
|
8
|
+
def send_request
|
12
9
|
config = Smster.configuration
|
13
10
|
api_id = config.smsru_api_id
|
14
11
|
|
@@ -16,14 +13,14 @@ class Sms::Smsru < Sms
|
|
16
13
|
'http://sms.ru/sms/send',
|
17
14
|
'api_id' => api_id,
|
18
15
|
'text' => text,
|
19
|
-
'to' =>
|
16
|
+
'to' => to,
|
20
17
|
'from' => name
|
21
18
|
)
|
22
19
|
end
|
23
20
|
|
24
|
-
def
|
21
|
+
def assign_attrs_by(response)
|
25
22
|
return unless response.include?('100')
|
26
23
|
|
27
|
-
(/\n(.*)\n/).match(response)[1]
|
24
|
+
self.api_message_id = (/\n(.*)\n/).match(response)[1]
|
28
25
|
end
|
29
26
|
end
|
data/lib/smster/sms.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
class Sms
|
2
|
-
attr_accessor :name, :type, :
|
3
|
-
:text, :status, :status_message
|
2
|
+
attr_accessor :name, :type, :api_message_id,
|
3
|
+
:text, :status, :status_message,
|
4
|
+
:to
|
4
5
|
|
5
6
|
## Codes
|
6
7
|
STATUSES = { created: 0, sent: 1, delivered: 2, failed: 3 }
|
@@ -19,11 +20,20 @@ class Sms
|
|
19
20
|
end
|
20
21
|
|
21
22
|
def send_sms
|
22
|
-
|
23
|
+
send_to_provider
|
23
24
|
|
24
|
-
|
25
|
-
self.status
|
25
|
+
status_name = api_message_id ? :sent : :failed
|
26
|
+
self.status = STATUSES[status_name]
|
26
27
|
|
27
28
|
self
|
28
29
|
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def send_to_provider
|
34
|
+
modify_params
|
35
|
+
|
36
|
+
response = send_request
|
37
|
+
assign_attrs_by(response)
|
38
|
+
end
|
29
39
|
end
|
data/lib/smster.rb
CHANGED
@@ -0,0 +1,32 @@
|
|
1
|
+
require './test/test_helper'
|
2
|
+
|
3
|
+
class ClickatellTest < Minitest::Test
|
4
|
+
def test_should_send
|
5
|
+
sms = Sms::Clickatell.send_sms(to: @to, text: @text)
|
6
|
+
|
7
|
+
assert_equal @statuses[:sent], sms.status
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_should_modify_to
|
11
|
+
to = '+abc' + @to
|
12
|
+
|
13
|
+
sms = Sms::Clickatell.send_sms(to: to, text: @text)
|
14
|
+
|
15
|
+
assert_equal to.gsub(/\D/, ''), sms.to
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_should_modify_text
|
19
|
+
sms = Sms::Clickatell.send_sms(to: @to, text: @text)
|
20
|
+
|
21
|
+
assert_equal @text.tr(' ', '+'), sms.text
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def stub_send_request
|
27
|
+
body = { data: { message: ['apiMessageId' => 15] } }.to_json
|
28
|
+
|
29
|
+
stub_request(:post, 'https://api.clickatell.com/rest/message')
|
30
|
+
.to_return(status: 200, body: body, headers: {})
|
31
|
+
end
|
32
|
+
end
|
data/test/nexmo_test.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
require './test/test_helper'
|
2
|
+
|
3
|
+
class NexmoTest < Minitest::Test
|
4
|
+
def test_should_send
|
5
|
+
sms = Sms::Nexmo.send_sms(to: @to, text: @text)
|
6
|
+
|
7
|
+
assert_equal @statuses[:sent], sms.status
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_should_modify_to
|
11
|
+
to = '+abc' + @to
|
12
|
+
|
13
|
+
sms = Sms::Nexmo.send_sms(to: to, text: @text)
|
14
|
+
|
15
|
+
assert_equal to.gsub(/\D/, ''), sms.to
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_should_modify_text
|
19
|
+
sms = Sms::Nexmo.send_sms(to: @to, text: @text)
|
20
|
+
|
21
|
+
assert_equal @text.tr(' ', '+'), sms.text
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def stub_send_request
|
27
|
+
body = { messages: ['message-id' => 15] }.to_json
|
28
|
+
|
29
|
+
stub_request(:post, 'https://rest.nexmo.com/sms/json')
|
30
|
+
.to_return(status: 200, body: body, headers: {})
|
31
|
+
end
|
32
|
+
end
|
data/test/smsru_test.rb
CHANGED
@@ -2,28 +2,26 @@ require './test/test_helper'
|
|
2
2
|
|
3
3
|
class SmsruTest < Minitest::Test
|
4
4
|
def test_should_send
|
5
|
-
|
5
|
+
sms = Sms::Smsru.send_sms(to: @to, text: @text)
|
6
6
|
|
7
|
-
@statuses
|
8
|
-
|
9
|
-
attrs = { to: phone, text: 'i am smster!' }
|
7
|
+
assert_equal @statuses[:sent], sms.status
|
8
|
+
end
|
10
9
|
|
11
|
-
|
10
|
+
def test_should_modify_to
|
11
|
+
to = 'a+bc' + @to
|
12
12
|
|
13
|
-
|
13
|
+
sms = Sms::Smsru.send_sms(to: to, text: @text)
|
14
|
+
|
15
|
+
result = to.gsub(/\D/, '')
|
16
|
+
assert_equal result, sms.to
|
14
17
|
end
|
15
18
|
|
16
19
|
private
|
17
20
|
|
18
21
|
def stub_send_request
|
22
|
+
body = "100\n201523-1000007\nbalance=52.54"
|
23
|
+
|
19
24
|
stub_request(:post, 'http://sms.ru/sms/send')
|
20
|
-
.to_return(
|
21
|
-
status: 200,
|
22
|
-
body:
|
23
|
-
'100
|
24
|
-
201523-1000007
|
25
|
-
balance=52.54',
|
26
|
-
headers: {}
|
27
|
-
)
|
25
|
+
.to_return(status: 200, body: body, headers: {})
|
28
26
|
end
|
29
27
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smster_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- doniv
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: SMS sending service through different providers with maximum convenience.
|
14
14
|
email:
|
@@ -21,7 +21,11 @@ files:
|
|
21
21
|
- lib/smster.rb
|
22
22
|
- lib/smster/configuration.rb
|
23
23
|
- lib/smster/sms.rb
|
24
|
+
- lib/smster/sms/clickatell.rb
|
25
|
+
- lib/smster/sms/nexmo.rb
|
24
26
|
- lib/smster/sms/smsru.rb
|
27
|
+
- test/clickatell_test.rb
|
28
|
+
- test/nexmo_test.rb
|
25
29
|
- test/smsru_test.rb
|
26
30
|
- test/test_helper.rb
|
27
31
|
homepage: https://github.com/IlyaDonskikh/smster_ruby
|
@@ -49,5 +53,7 @@ signing_key:
|
|
49
53
|
specification_version: 4
|
50
54
|
summary: SMS service
|
51
55
|
test_files:
|
56
|
+
- test/clickatell_test.rb
|
57
|
+
- test/nexmo_test.rb
|
52
58
|
- test/smsru_test.rb
|
53
59
|
- test/test_helper.rb
|