twilito 0.3.3 → 0.4.0

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
  SHA256:
3
- metadata.gz: 3cfb75e4c673aacee3f2e2d4d76bc4106c0129820825918b12f6ccd0c440a2bb
4
- data.tar.gz: de0d9a0d43911c1db4cd3406aab39a4beb89f6f17d75e02b4dd0c13863c5bd8e
3
+ metadata.gz: ac55859f2c24ea8da46a22d84d2b34473c586280bd4f2541d70fdbe5de044229
4
+ data.tar.gz: 9301076c59a7372e51870b2b65c33fe793e3163333f6925e67646d8dd1f0c497
5
5
  SHA512:
6
- metadata.gz: 37fdc8154d808290a9b85c6d55a5a93905882d558203ebdd587148d6a2b9f4661cc5455287a86a3d0739792aee9cabbe58b58eefe150980e13bebcdcb2646479
7
- data.tar.gz: 607ad6172943a0ddc9d8bdfd9ed51b78e9d3f1f005bb34a6003967b1c6b089013eec8974d48cebd4b699ca7a3ccc6a621fcdb696908d201c6322de5314376fc4
6
+ metadata.gz: d8528c27bcf15dffa8a1e844fd80cd5e648102ca6c7e20afb3af00edbbe7193ba23ff86f367771f901f4e92198ba1304afa730f757cb27964178b68cb3dd524b
7
+ data.tar.gz: 9edd9bc5e5c52a872db0a4e45e0eba6b04a5fba0de98ef615ca2c1a5c8dbb5abf01f772cb6760a7c3e363cbfa98a6e9129a13f67a366bad746a0f57e7f09135c
data/Gemfile.lock CHANGED
@@ -6,13 +6,13 @@ PATH
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
- addressable (2.6.0)
10
- public_suffix (>= 2.0.2, < 4.0)
9
+ addressable (2.7.0)
10
+ public_suffix (>= 2.0.2, < 5.0)
11
11
  ast (2.4.1)
12
12
  coderay (1.1.2)
13
- crack (0.4.3)
14
- safe_yaml (~> 1.0.0)
15
- hashdiff (0.3.8)
13
+ crack (0.4.5)
14
+ rexml
15
+ hashdiff (1.0.1)
16
16
  method_source (0.9.2)
17
17
  minitest (5.11.3)
18
18
  parallel (1.19.2)
@@ -21,7 +21,7 @@ GEM
21
21
  pry (0.12.2)
22
22
  coderay (~> 1.1.0)
23
23
  method_source (~> 0.9.0)
24
- public_suffix (3.0.3)
24
+ public_suffix (4.0.6)
25
25
  rainbow (3.0.0)
26
26
  rake (13.0.1)
27
27
  regexp_parser (1.7.1)
@@ -38,12 +38,11 @@ GEM
38
38
  rubocop-ast (0.0.3)
39
39
  parser (>= 2.7.0.1)
40
40
  ruby-progressbar (1.10.1)
41
- safe_yaml (1.0.5)
42
41
  unicode-display_width (1.7.0)
43
- webmock (3.5.1)
42
+ webmock (3.12.2)
44
43
  addressable (>= 2.3.6)
45
44
  crack (>= 0.3.2)
46
- hashdiff
45
+ hashdiff (>= 0.4.0, < 2.0.0)
47
46
  yard (0.9.25)
48
47
 
49
48
  PLATFORMS
@@ -56,11 +55,11 @@ DEPENDENCIES
56
55
  rake (~> 13.0)
57
56
  rubocop
58
57
  twilito!
59
- webmock (~> 3)
58
+ webmock (~> 3.12)
60
59
  yard (~> 0.9)
61
60
 
62
61
  RUBY VERSION
63
62
  ruby 2.7.2p137
64
63
 
65
64
  BUNDLED WITH
66
- 2.2.14
65
+ 2.2.15
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Twilito
2
2
 
3
- A tiny, zero dependency helper for sending text messages with Twilio. Just enough of a wrapper to abstract away Twilio's REST API for sending messages, without _anything_ else.
3
+ A tiny, zero dependency helper for sending text messages with Twilio. _Just enough_ of a wrapper to abstract away Twilio's REST API for sending messages, without _anything_ else.
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/twilito.svg)](https://badge.fury.io/rb/twilito) [![Actions Status](https://github.com/alexford/twilito/workflows/CI/badge.svg)](https://github.com/alexford/twilito/actions)
6
6
 
@@ -16,7 +16,7 @@ If you use more of Twilio, consider [twilio-ruby](https://github.com/twilio/twil
16
16
 
17
17
  ## Usage
18
18
 
19
- Twilito should work on Ruby 2.4 and up.
19
+ Twilito should work on Ruby 2.4 and up. Unit tests [run in CI](https://github.com/alexford/twilito/actions) on 2.4, 2.5, 2.6, 2.7, and 3.0.
20
20
 
21
21
  #### Install the gem
22
22
 
@@ -27,11 +27,11 @@ gem 'twilito'
27
27
  #### Simplest case
28
28
 
29
29
  ```ruby
30
- # All of these arguments are required, but can be defaulted (see below)
30
+ # All of these arguments are required, but can be configured as defaults (see below)
31
31
  result = Twilito.send_sms(
32
32
  to: '+15555555555',
33
33
  from: '+15554444444',
34
- content: 'This is my content',
34
+ body: 'This is my content',
35
35
  account_sid: '...', # Twilio Credentials
36
36
  auth_token: '...'
37
37
  )
@@ -63,7 +63,9 @@ rescue Twilito::SendError => e
63
63
  end
64
64
  ```
65
65
 
66
- #### Every argument can be defaulted
66
+ ### Configuring Defaults For Required Arguments
67
+
68
+ The five required arguments (`to`, `from`, `body`, `account_sid`, and `auth_token`) can be configured as defaults with `Twilito.configure`.
67
69
 
68
70
  ```ruby
69
71
  # In an initializer or something like that:
@@ -83,34 +85,21 @@ end
83
85
  Twilito.send_sms!(to: '+15555555555', body: 'Foo')
84
86
  ```
85
87
 
86
- **Everything can be defaulted, including the message body, so that a bare `Twilio.send_sms!` can work in your code**
88
+ ### Using Other, Optional (Arbitrary) Arguments
87
89
 
88
- #### Sending MMS
90
+ There are a number of optional parameters defined by Twilio for sending a message (see [the API documentation](https://www.twilio.com/docs/sms/api/message-resource#create-a-message-resource)). Any of these can be sent with Twilito using the "Ruby-style" snake cased equivalent of the parameter.
89
91
 
90
92
  ```ruby
91
- # Use the optional media_url argument, which is sent
92
- # to Twilio as MediaUrl
93
+ # Twilito sends arbitrary arguments to Twilio's API after CamelCasing keys to match Twilio's style.
94
+ # NOTE: This example assumes auth_token, account_sid, and from have already been configured.
93
95
 
94
96
  result = Twilito.send_sms(
95
97
  to: '+15555555555',
96
- content: 'This is my content',
97
- media_url: 'https://example.com/image.png',
98
+ body: 'This is my content',
99
+ media_url: 'https://example.com/image.png', # MediaUrl
100
+ status_callback: 'https://your.app.io/sms/callback', # StatusCallback
101
+ smart_encoded: true # SmartEncoded
98
102
  )
99
-
100
- ```
101
-
102
- #### Set the optional `callback_url` argument if you want to receive HTTP callbacks from Twilio
103
-
104
- ```ruby
105
- # Use the optional media_url argument, which is sent
106
- # to Twilio as MediaUrl
107
-
108
- result = Twilito.send_sms(
109
- to: '+15555555555',
110
- content: 'This is my content',
111
- status_callback: 'https://your.app.io/sms/callback',
112
- )
113
-
114
103
  ```
115
104
 
116
105
  ## Testing your code
data/lib/twilito/api.rb CHANGED
@@ -9,7 +9,7 @@ module Twilito
9
9
  req = Net::HTTP::Post.new(uri)
10
10
  req.initialize_http_header('User-Agent' => user_agent)
11
11
  req.basic_auth(args[:account_sid], args[:auth_token])
12
- req.set_form_data(twilio_params(args))
12
+ req.set_form_data(twilio_form_data(args))
13
13
 
14
14
  http.request(req)
15
15
  end
@@ -31,14 +31,13 @@ module Twilito
31
31
 
32
32
  private
33
33
 
34
- def twilio_params(args)
35
- {
36
- 'To' => args[:to],
37
- 'From' => args[:from],
38
- 'Body' => args[:body],
39
- 'MediaUrl' => args[:media_url],
40
- 'StatusCallback' => args[:status_callback]
41
- }.compact
34
+ # NOTE: Converts snake_cased hash of arguments to CamelCase to match Twilio
35
+ # API expectations. Also, removes auth_token and account_sid as those are
36
+ # included separately in .send_response as basic auth instead of POST body
37
+ def twilio_form_data(args)
38
+ args
39
+ .merge(auth_token: nil, account_sid: nil).compact
40
+ .reduce({}) { |result, (k, v)| result.merge(k.to_s.split('_').collect(&:capitalize).join => v) }
42
41
  end
43
42
 
44
43
  def user_agent
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Twilito
4
- VERSION = "0.3.3"
4
+ VERSION = "0.4.0"
5
5
  end
data/twilito.gemspec CHANGED
@@ -27,6 +27,6 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency "pry"
28
28
  spec.add_development_dependency "rake", "~> 13.0"
29
29
  spec.add_development_dependency "rubocop"
30
- spec.add_development_dependency "webmock", "~> 3"
30
+ spec.add_development_dependency "webmock", "~> 3.12"
31
31
  spec.add_development_dependency "yard", "~> 0.9"
32
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twilito
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Ford
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-12 00:00:00.000000000 Z
11
+ date: 2021-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3'
89
+ version: '3.12'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '3'
96
+ version: '3.12'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: yard
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -152,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  requirements: []
155
- rubygems_version: 3.1.4
155
+ rubygems_version: 3.0.3
156
156
  signing_key:
157
157
  specification_version: 4
158
158
  summary: A tiny, zero dependency, and easy to test helper for sending text messages