smster_ruby 1.0.0 → 1.1.5

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
  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