sms-pilot-api-v1 0.0.9 → 0.0.10

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
  SHA256:
3
- metadata.gz: 2cdf5eab949b7c36ae220eec407cd1afce5e9fb5df2b7c09c8b7e05327bc67f5
4
- data.tar.gz: a001b60a5975b0ed50aa69b4f2b66e3d974e001cacf6af949a60617a234d6fe6
3
+ metadata.gz: e18ed848bce6fc14c2011704a417ebcd18b26a2364d6eded6f70c4bf8e0fd37a
4
+ data.tar.gz: 8c0fc16b26a26194ebd2543aa231f0b41b74181141de85f4530114c2045c55ac
5
5
  SHA512:
6
- metadata.gz: 7d8a78e4d68cf605f974feb7c3068245609f1fc2a2765d479c0badf013c6b43fb3b9e3480c97039befc09a9f12208c0ef3d098395c79d86a948ba040f6176763
7
- data.tar.gz: 02da8904baac9232c9d4c4e6587f4dc1814a20aec9c2558ba8240db2ef8b324af72553278fd818577a32bccfa63dea6bf98c48272047ae67533cdcd687e2de1c
6
+ metadata.gz: 64fad357cc93e5b0901db4c15a6965881e205fbb45ef3637d196d280ef11e089595e8e402ad81030883f51472c33716f239381343a05b58d01a334879b46678a
7
+ data.tar.gz: 172f139edc7163d805edd08a891cbeb1e1789832693b706fe99f5fc76b41f4b40fdc6aada62977b1c84df7d69a0539dad76df465aee66371ca3d144a39ca7444
data/CHANGELOG.md CHANGED
@@ -1,41 +1,78 @@
1
1
  # Changelog
2
2
 
3
- ## [0.0.9] - 10 May 2021
3
+ ## [0.0.10] - 2021-05-11
4
+
5
+ ### Added
6
+
7
+ - Accepts sender name in [`#initialize`](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot%2FClient:initialize)
8
+ - Tests for `send_sms`
9
+
10
+ ## [0.0.9] - 2021-05-10
11
+
12
+ ### Added
4
13
 
5
14
  - Passes `charset` attribute to the API in [`#build_uri`](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot%2FClient:build_uri)
6
15
  - Passes `lang` attribute to the API in [`#build_uri`](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot%2FClient:build_uri)
16
+
17
+ ### Changed
18
+
7
19
  - Stores constant request params in constants
20
+
21
+ ### Deprecated
22
+
8
23
  - Deprecates [`#sms_status`](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot%2FClient:sms_status) in favor of [`#broadcast_status`](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot%2FClient:broadcast_status)
9
24
 
10
- ## [0.0.8] - 10 May 2021
25
+ ## [0.0.8] - 2021-05-10
26
+
27
+ ### Added
11
28
 
12
- - Adds [`#broadcast_id`](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot%2FClient:broadcast_id) method
13
- - Adds [roadmap section](https://github.com/sergeypedan/sms-pilot-api-v1#roadmap) in the Readme
29
+ - [`#broadcast_id`](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot%2FClient:broadcast_id) method
30
+ - [roadmap section](https://github.com/sergeypedan/sms-pilot-api-v1#roadmap) in the Readme
14
31
 
15
- ## [0.0.7] - 9 May 2021
32
+ ## [0.0.7] - 2021-05-09
33
+
34
+ ### Changed
16
35
 
17
36
  - Returns original values from validation methods
18
37
  - Offloads parsing response body to a method
19
38
  - Improves documentation
39
+
40
+ ### Added
41
+
20
42
  - Adds CodeClimate badges
21
43
  - Writes tests for [`#initialize`](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot%2FClient:initialize)
22
44
  - Writes tests for [`#api_key`](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot%2FClient:api_key)
23
45
 
24
- ## [0.0.6] - 9 May 2021
46
+ ## [0.0.6] - 2021-05-09
47
+
48
+ ### Fixed
25
49
 
26
50
  - Corrects cost type
51
+
52
+ ### Changed
53
+
27
54
  - Switches to PRY in console
28
55
 
29
- ## [0.0.5] - 9 May 2021
56
+ ## [0.0.5] - 2021-05-09
57
+
58
+ ### Added
30
59
 
31
60
  - Adds locale support (RU / EN)
32
61
 
33
- ## [0.0.4] - 9 May 2021
62
+ ## [0.0.4] - 2021-05-09
63
+
64
+ ### Fixed
34
65
 
35
- - Drop dependence on HTTP.rb gem
36
66
  - Corrects what [`#send_sms`](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot%2FClient:send_sms) returns (could return String errors instead of Booleans)
67
+
68
+ ### Changed
69
+
70
+ - Drop dependence on HTTP.rb gem
71
+
72
+ ### Added
73
+
37
74
  - Adds extensive [documentation](https://rubydoc.info/github/sergeypedan/sms-pilot-api-v1/master/SmsPilot/Client) via YARD & RubyDoc
38
75
 
39
- ## [0.0.3] - 6 May 2021
76
+ ## [0.0.3] - 2021-05-06
40
77
 
41
78
  - Initial release
data/Gemfile CHANGED
@@ -6,5 +6,9 @@ source "https://rubygems.org"
6
6
  gemspec
7
7
 
8
8
  gem "pry"
9
- gem "rake", "~> 13.0"
10
- gem "rspec", "~> 3.0"
9
+ gem "rake"
10
+
11
+ group :test do
12
+ gem "rspec"
13
+ gem "webmock"
14
+ end
data/Gemfile.lock CHANGED
@@ -6,13 +6,20 @@ PATH
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ addressable (2.7.0)
10
+ public_suffix (>= 2.0.2, < 5.0)
9
11
  coderay (1.1.3)
12
+ crack (0.4.5)
13
+ rexml
10
14
  diff-lcs (1.4.4)
15
+ hashdiff (1.0.1)
11
16
  method_source (1.0.0)
12
17
  pry (0.14.1)
13
18
  coderay (~> 1.1)
14
19
  method_source (~> 1.0)
20
+ public_suffix (4.0.6)
15
21
  rake (13.0.3)
22
+ rexml (3.2.5)
16
23
  rspec (3.10.0)
17
24
  rspec-core (~> 3.10.0)
18
25
  rspec-expectations (~> 3.10.0)
@@ -26,15 +33,20 @@ GEM
26
33
  diff-lcs (>= 1.2.0, < 2.0)
27
34
  rspec-support (~> 3.10.0)
28
35
  rspec-support (3.10.2)
36
+ webmock (3.12.2)
37
+ addressable (>= 2.3.6)
38
+ crack (>= 0.3.2)
39
+ hashdiff (>= 0.4.0, < 2.0.0)
29
40
 
30
41
  PLATFORMS
31
42
  x86_64-darwin-17
32
43
 
33
44
  DEPENDENCIES
34
45
  pry
35
- rake (~> 13.0)
36
- rspec (~> 3.0)
46
+ rake
47
+ rspec
37
48
  sms-pilot-api-v1!
49
+ webmock
38
50
 
39
51
  BUNDLED WITH
40
52
  2.2.17
data/README.md CHANGED
@@ -76,6 +76,7 @@ See [structured documentation](https://rubydoc.info/github/sergeypedan/sms-pilot
76
76
 
77
77
  ```ruby
78
78
  client.send_sms("+7 (902) 123-45-67", "Привет, мир!")
79
+ client.send_sms("+7 (902) 123-45-67", "Привет, мир!", "ФССПРФ")
79
80
  # => true
80
81
  ```
81
82
 
@@ -131,13 +131,15 @@ module SmsPilot
131
131
  #
132
132
  # @example
133
133
  # client.send_sms("+7 (902) 123-45-67", "Привет, мир!") # => true
134
+ # client.send_sms("+7 (902) 123-45-67", "Привет, мир!", "ФССПРФ") # => true
134
135
  #
135
- def send_sms(phone, message)
136
+ def send_sms(phone, message, sender_name = nil)
136
137
  validate_phone! phone
137
138
  validate_message! message
139
+ validate_sender_name! sender_name
138
140
 
139
141
  @phone = normalize_phone(phone)
140
- @uri = build_uri(@phone, message)
142
+ @uri = build_uri(@phone, message, sender_name)
141
143
 
142
144
  response = persist_response_details Net::HTTP.get_response(@uri)
143
145
 
@@ -358,21 +360,29 @@ module SmsPilot
358
360
  # @return [URI]
359
361
  # @raise [URI::InvalidURIError] but is almost impossible, because we provide the URL ourselves
360
362
  #
363
+ # @param [String] phone
364
+ # @param [String] text
365
+ # @param [nil, String] sender_name
366
+ #
361
367
  # @see #api_key
362
368
  # @see #phone
363
369
  # @see #validate_phone!
364
370
  # @see #validate_message!
365
- #
366
- private def build_uri(phone, text)
371
+ # @see #validate_sender_name!
372
+ #
373
+ private def build_uri(phone, text, sender_name)
374
+ attributes = {
375
+ apikey: @api_key,
376
+ charset: REQUEST_CHARSET,
377
+ format: REQUEST_ACCEPT_FORMAT,
378
+ lang: @locale,
379
+ send: text,
380
+ to: phone
381
+ }
382
+ attributes = attributes.merge({ sender: sender_name }) if sender_name
383
+
367
384
  URI.parse(API_ENDPOINT).tap do |uri|
368
- uri.query = URI.encode_www_form({
369
- apikey: @api_key,
370
- charset: REQUEST_CHARSET,
371
- format: REQUEST_ACCEPT_FORMAT,
372
- lang: @locale,
373
- send: text,
374
- to: phone
375
- })
385
+ uri.query = URI.encode_www_form(attributes)
376
386
  end
377
387
  end
378
388
 
@@ -476,6 +486,21 @@ module SmsPilot
476
486
  phone
477
487
  end
478
488
 
489
+
490
+ # Validates sender name
491
+ # @private
492
+ #
493
+ # @param [nil, String] sender_name
494
+ # @return [String] the original value passed into the method, only if it was valid
495
+ #
496
+ # @raise [SmsPilot::InvalidSenderNameError] if you pass anything but <tt>nil</tt> or non-empty <tt>String</tt>
497
+ #
498
+ private def validate_sender_name!(sender_name)
499
+ fail SmsPilot::InvalidSenderNameError, "sender name must be either nil or String" unless [NilClass, String].include? sender_name.class
500
+ fail SmsPilot::InvalidSenderNameError, "sender name cannot be empty" if sender_name == ""
501
+ sender_name
502
+ end
503
+
479
504
  # @!endgroup
480
505
 
481
506
  end
@@ -2,9 +2,10 @@
2
2
 
3
3
  module SmsPilot
4
4
 
5
- class InvalidAPIkeyError < ArgumentError; end
6
- class InvalidMessageError < ArgumentError; end
7
- class InvalidPhoneError < ArgumentError; end
8
- class InvalidLocaleError < ArgumentError; end
5
+ class InvalidAPIkeyError < ArgumentError; end
6
+ class InvalidLocaleError < ArgumentError; end
7
+ class InvalidMessageError < ArgumentError; end
8
+ class InvalidPhoneError < ArgumentError; end
9
+ class InvalidSenderNameError < ArgumentError; end
9
10
 
10
11
  end
@@ -3,6 +3,6 @@
3
3
  module SmsPilot
4
4
 
5
5
  # Gem version
6
- VERSION = "0.0.9"
6
+ VERSION = "0.0.10"
7
7
 
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sms-pilot-api-v1
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Pedan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-10 00:00:00.000000000 Z
11
+ date: 2021-05-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Simple wrapper around SMS pilot API v1. Version 1 because it returns
14
14
  more data within its standard response