smster_ruby 1.0.0 → 1.1.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: f7cf21eba6341ca5a5c27688bc9736295b513c99
4
- data.tar.gz: 6f8f7652396d06f93a8cde59b3a7f2d43cbcc964
3
+ metadata.gz: 39db1e1ba8b30c1f2e2fa64b90bad2b6262b49bf
4
+ data.tar.gz: 4dd306b0de5a11c42e71e8c7e656c33878c7d70b
5
5
  SHA512:
6
- metadata.gz: 79993bad5368ffc2e85c5e121be8d34d539dd24e0525219a4d0a4be04c98c3f22c02c321e6dbc353a74d1062001f446c5547346d7fb32a2ea2e38618a11ec816
7
- data.tar.gz: 9a45848e62e5e6cdfdedb182663450fb01b3f843ffbb0af11c1d5da5f6e8528a7497327c1cdf57d07642be11f7f5c23439721bb0a098d27697343021e323ff29
6
+ metadata.gz: 6fe37efa618c828e8334f56f2a249bfc033cb1b1d5452bf8fa98ec9c736ba4823e46568c4513531404300b203a810444488f083bd9cd9354f6daddb160dc0cbf
7
+ data.tar.gz: 9aa0a9fb4f795ac66846f3ca3254c3a7f515b0a610ce6cdf549835b0907580affef930f8aa3eb091a9164558c96d050f3ba64f7cdbcdd2cdd0b70043af6103c2
@@ -1,4 +1,12 @@
1
- class Sms::Clickatell < Sms
1
+ class Sms::Clickatell < SmsLayer
2
+ attr_accessor :unicode, :clickatell_auth_code
3
+
4
+ def clickatell_auth_code
5
+ config = Smster.configuration
6
+
7
+ @clickatell_auth_code = config.clickatell_authorization_code
8
+ end
9
+
2
10
  private
3
11
 
4
12
  def modify_params
@@ -7,10 +15,14 @@ class Sms::Clickatell < Sms
7
15
  end
8
16
 
9
17
  def send_request
10
- code = Smster.configuration.clickatell_authorization_code
11
- msg_params = { 'text' => text, 'to' => [to] }.to_json
18
+ msg_params = {
19
+ 'text' => text,
20
+ 'to' => [to],
21
+ 'unicode' => unicode,
22
+ 'from' => name
23
+ }.to_json
12
24
 
13
- start_request(msg_params, code)
25
+ start_request(msg_params, clickatell_auth_code)
14
26
  end
15
27
 
16
28
  def start_request(params, code)
@@ -1,4 +1,4 @@
1
- class Sms::Nexmo < Sms
1
+ class Sms::Nexmo < SmsLayer
2
2
  private
3
3
 
4
4
  def modify_params
@@ -1,4 +1,12 @@
1
- class Sms::Smsru < Sms
1
+ class Sms::Smsru < SmsLayer
2
+ attr_accessor :test, :smsru_api_id
3
+
4
+ def smsru_api_id
5
+ config = Smster.configuration
6
+
7
+ @smsru_api_id = config.smsru_api_id
8
+ end
9
+
2
10
  private
3
11
 
4
12
  def modify_params
@@ -6,21 +14,38 @@ class Sms::Smsru < Sms
6
14
  end
7
15
 
8
16
  def send_request
9
- config = Smster.configuration
10
- api_id = config.smsru_api_id
11
-
12
17
  RestClient.post(
13
18
  'http://sms.ru/sms/send',
14
- 'api_id' => api_id,
19
+ 'api_id' => smsru_api_id,
15
20
  'text' => text,
16
21
  'to' => to,
17
- 'from' => name
22
+ 'from' => name,
23
+ 'test' => test
18
24
  )
19
25
  end
20
26
 
21
27
  def assign_attrs_by(response)
28
+ self.status_message = response
29
+
22
30
  return unless response.include?('100')
23
31
 
24
- self.api_message_id = (/\n(.*)\n/).match(response)[1]
32
+ self.balance = extract_from(response, /.*\n.*\nbalance=(.*)/)
33
+ self.api_message_id = extract_from(response, /\n(.*)\n?/)
34
+ self.cost = extract_from(request_cost, /\n(.*)\n?/)
35
+ end
36
+
37
+ def request_cost
38
+ RestClient.post(
39
+ 'http://sms.ru/sms/cost',
40
+ 'api_id' => smsru_api_id,
41
+ 'text' => text,
42
+ 'to' => to
43
+ )
44
+ end
45
+
46
+ def extract_from(response, regexp)
47
+ value = (regexp).match(response)
48
+
49
+ value && value[1]
25
50
  end
26
51
  end
data/lib/smster/sms.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  class Sms
2
2
  attr_accessor :name, :type, :api_message_id,
3
3
  :text, :status, :status_message,
4
- :to
4
+ :to, :cost, :balance
5
5
 
6
6
  ## Codes
7
7
  STATUSES = { created: 0, sent: 1, delivered: 2, failed: 3 }
@@ -18,22 +18,4 @@ class Sms
18
18
 
19
19
  @status = STATUSES[:created]
20
20
  end
21
-
22
- def send_sms
23
- send_to_provider
24
-
25
- status_name = api_message_id ? :sent : :failed
26
- self.status = STATUSES[status_name]
27
-
28
- self
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
39
21
  end
@@ -0,0 +1,19 @@
1
+ class SmsLayer < Sms
2
+ def send_sms
3
+ send_to_provider
4
+
5
+ status_name = api_message_id ? :sent : :failed
6
+ self.status = STATUSES[status_name]
7
+
8
+ self
9
+ end
10
+
11
+ private
12
+
13
+ def send_to_provider
14
+ modify_params
15
+
16
+ response = send_request
17
+ assign_attrs_by(response)
18
+ end
19
+ end
data/lib/smster.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rest_client'
2
2
  require 'smster/configuration'
3
3
  require 'smster/sms'
4
+ require 'smster/sms_layer'
4
5
  require 'smster/sms/smsru'
5
6
  require 'smster/sms/nexmo'
6
7
  require 'smster/sms/clickatell'
data/test/smsru_test.rb CHANGED
@@ -1,12 +1,30 @@
1
1
  require './test/test_helper'
2
2
 
3
3
  class SmsruTest < Minitest::Test
4
+ def setup
5
+ super
6
+
7
+ stub_cost_request
8
+ end
9
+
4
10
  def test_should_send
5
11
  sms = Sms::Smsru.send_sms(to: @to, text: @text)
6
12
 
7
13
  assert_equal @statuses[:sent], sms.status
8
14
  end
9
15
 
16
+ def test_assign_balance
17
+ sms = Sms::Smsru.send_sms(to: @to, text: @text)
18
+
19
+ assert_equal sms.balance, '52.54'
20
+ end
21
+
22
+ def test_assign_cost
23
+ sms = Sms::Smsru.send_sms(to: @to, text: @text)
24
+
25
+ assert_equal sms.cost, '0.69'
26
+ end
27
+
10
28
  def test_should_modify_to
11
29
  to = 'a+bc' + @to
12
30
 
@@ -24,4 +42,11 @@ class SmsruTest < Minitest::Test
24
42
  stub_request(:post, 'http://sms.ru/sms/send')
25
43
  .to_return(status: 200, body: body, headers: {})
26
44
  end
45
+
46
+ def stub_cost_request
47
+ body = "100\n0.69\n1"
48
+
49
+ stub_request(:post, 'http://sms.ru/sms/cost')
50
+ .to_return(status: 200, body: body, headers: {})
51
+ end
27
52
  end
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: 1.0.0
4
+ version: 1.1.5
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-04 00:00:00.000000000 Z
11
+ date: 2015-06-15 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: SMS sending service through different providers with maximum convenience.
14
14
  email:
@@ -24,6 +24,7 @@ files:
24
24
  - lib/smster/sms/clickatell.rb
25
25
  - lib/smster/sms/nexmo.rb
26
26
  - lib/smster/sms/smsru.rb
27
+ - lib/smster/sms_layer.rb
27
28
  - test/clickatell_test.rb
28
29
  - test/nexmo_test.rb
29
30
  - test/smsru_test.rb