semaphore-sms 0.1.4 → 0.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: 109bbcf088a8e6fd255a87164369fb4c45092dac
4
- data.tar.gz: ece15bffbbd1ef1ba8b1041b154a0ea973500d36
3
+ metadata.gz: 53f198e4780b610af7208d4cbbda74017bd5e894
4
+ data.tar.gz: 02bf0f354a4ce0efb2cc108a44bf6cca1fb5ff2e
5
5
  SHA512:
6
- metadata.gz: 19878b0a47c50ec4e7dbf6e7d1271b41c46c18500abb298ca0fe4f5beb34b0b23d86f26b87795e2116bac280f60e8e8569624f52dc2abce7af8a16e88cf46761
7
- data.tar.gz: ce7b95e4d4c381bfcab66933791b5138d0d71aa5aa6d60132bf74d1714cdf3647d2afc2b3248fd44f4f30dfae31914a66ed0e3ffadd285976025ea82d8e19b62
6
+ metadata.gz: 78e43db86a717c83f663d4589bbe7d3fbde093d3d3f26d6797cdf58cfab67bc3a065d1458b33b5779d7a4a99bce0ce40ddbb616c96d1886a909f6b2aa8cc52cd
7
+ data.tar.gz: 30fa575fcacd2ae159770bc7ba3cb4083846a70fee63ad442d97ac9c016585119f373abd66c3857abc61c7abe052228dcef264457ca3a8256133db8b6144bf16
data/README.md CHANGED
@@ -21,8 +21,8 @@ Or install it yourself as:
21
21
  ## Usage
22
22
 
23
23
  Run:
24
- ```
25
- rails g semaphore:sms:install
24
+ ```ruby
25
+ rails g semaphore:sms:install
26
26
  ```
27
27
 
28
28
  Note:
@@ -149,7 +149,7 @@ require "semaphore-sms"
149
149
  # Note: all params are optional.
150
150
  Format is "YYYY-MM-DD" for date,
151
151
  Format is lowercase (e.g. "globe", "smart") for network,
152
- Format is lowercase (e.g. "pending", "success")
152
+ Format is lowercase (e.g. "pending", "success") for status
153
153
 
154
154
  ## Requesting for a specific message
155
155
 
@@ -3,7 +3,7 @@ require "semaphore/sms/client"
3
3
 
4
4
  module Semaphore
5
5
  module Sms
6
- class ::Error < StandardError; end
6
+ class ::ConfigurationError < StandardError; end
7
7
 
8
8
  class << self
9
9
  attr_writer :api_key, :sender_name
@@ -18,7 +18,7 @@ module Semaphore
18
18
  end
19
19
 
20
20
  def api_key
21
- raise Error, 'API Key is required for GET/POST' unless @api_key
21
+ raise ConfigurationError, 'API Key is required for GET/POST' unless @api_key
22
22
  @api_key
23
23
  end
24
24
 
@@ -1,30 +1,40 @@
1
1
  require "curb"
2
2
  require "json"
3
- require "pry"
4
3
  require "forwardable"
4
+ require "piliponi"
5
5
 
6
6
  module Semaphore
7
7
  module Sms
8
+ class ::PhoneNumberError < StandardError; end
9
+
8
10
  class Client
9
11
  extend Forwardable
12
+
10
13
  Response = Struct.new(:status, :content)
11
14
 
12
15
  def initialize(config)
13
- raise Semaphore::Sms::Error, 'Config must have api key credentials' unless config.respond_to? :api_key
16
+ raise ConfigurationError, 'Config must have api key credentials' unless config.respond_to? :api_key
14
17
  @config = config
15
18
  end
16
19
 
17
- #TODO: add number validation here. Use piliponi gem.
18
20
  def send(message, recipients, sendername = nil)
21
+ recipients = clean_and_validate(recipients)
22
+
23
+ raise PhoneNumberError, 'Please verify the phonenumber' unless recipients
24
+
19
25
  options = {
20
26
  message: message,
21
27
  sendername: sendername || sender_name,
22
- number: recipients.kind_of?(Array) ? recipients.join(",") : recipients
28
+ number: recipients
23
29
  }.compact
24
30
  api_post("messages", options)
25
31
  end
26
32
 
27
33
  def priority(message, recipients, sendername = nil)
34
+ recipients = clean_and_validate(recipients)
35
+
36
+ raise PhoneNumberError, 'Please verify the phonenumber' unless recipients
37
+
28
38
  options = {
29
39
  message: message,
30
40
  sendername: sendername || sender_name,
@@ -93,6 +103,19 @@ module Semaphore
93
103
  end
94
104
  end
95
105
 
106
+ def clean_and_validate(recipients)
107
+ if recipients.kind_of?(Array)
108
+ recipients = recipients.reduce([]) do |mem, num|
109
+ mem << (validate(num) ? clean(num) : false)
110
+ mem
111
+ end
112
+ recipients.include?(false) ? false : recipients.join(",")
113
+ else
114
+ recipients = clean(recipients)
115
+ validate(recipients) ? recipients : false
116
+ end
117
+ end
118
+
96
119
  def handle_errors
97
120
  begin
98
121
  yield
@@ -100,6 +123,14 @@ module Semaphore
100
123
  Response.new(:error, { error: e.message })
101
124
  end
102
125
  end
126
+
127
+ def clean(num)
128
+ Piliponi.clean num
129
+ end
130
+
131
+ def validate(num)
132
+ Piliponi.plausible? num
133
+ end
103
134
  end
104
135
  end
105
136
  end
@@ -1,5 +1,5 @@
1
1
  module Semaphore
2
2
  module Sms
3
- VERSION = "0.1.4"
3
+ VERSION = "0.1.5"
4
4
  end
5
5
  end
@@ -31,6 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.require_paths = ["lib"]
32
32
 
33
33
  spec.add_dependency "curb", "~> 0.9.4"
34
+ spec.add_dependency "piliponi", "~> 1.2.1"
34
35
  #spec.add_dependency "json", "~> 2.1.0"
35
36
 
36
37
  spec.add_development_dependency "bundler", "~> 1.16"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semaphore-sms
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jim Arnold Go
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.9.4
27
+ - !ruby/object:Gem::Dependency
28
+ name: piliponi
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 1.2.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 1.2.1
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement