textris 0.3.1 → 0.3.2
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 +4 -4
- data/README.md +22 -4
- data/lib/textris.rb +1 -0
- data/lib/textris/delivery/nexmo.rb +18 -0
- data/lib/textris/message.rb +6 -4
- data/lib/textris/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c892d39927e7381aa8d34757802e9102d3341681
|
4
|
+
data.tar.gz: 63b2c323d52306386dd787c4304c98f458023715
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a8b73f20130a57a8b226eff56d89cc39b1b875265edc2bcc1fea1b5cc519bfb72f009bb709436e6490de1e29715955f2faae1f33a3e341b81e4ba99b4d4db55
|
7
|
+
data.tar.gz: 1ade51f79ebf729434c12c9a470500da2c99e0c4b87af1c01f102c2f41a05bde92f5cc2fc6e36866c9201e57fae632e308edbfcda86190467d2f3c076e3f77df
|
data/README.md
CHANGED
@@ -12,13 +12,15 @@ Unlike similar gems, **textris** has some unique features:
|
|
12
12
|
|
13
13
|
- e-mail proxy allowing to inspect messages using [Mailinator](https://mailinator.com/) or similar service
|
14
14
|
- phone number E164 validation and normalization with the [phony](https://github.com/floere/phony) gem
|
15
|
-
- built-in support for the Twilio
|
15
|
+
- built-in support for the Twilio and Nexmo APIs with [twilio-ruby](https://github.com/twilio/twilio-ruby) and [nexmo](https://github.com/timcraft/nexmo) gems
|
16
16
|
- multiple, per-environment configurable and chainable delivery methods
|
17
17
|
- extensible with any number of custom delivery methods (also chainable)
|
18
18
|
- background and scheduled texting thanks to integration with the [sidekiq](https://github.com/mperham/sidekiq) gem
|
19
19
|
- support for testing using self-explanatory `Textris::Base.deliveries`
|
20
20
|
- simple, extensible, fully tested code written from the ground up instead of copying *ActionMailer*
|
21
21
|
|
22
|
+
See the [blog entry](http://www.visuality.pl/posts/txt-messaging-with-textris-gem) for the whole story and a practical usage example.
|
23
|
+
|
22
24
|
## Installation
|
23
25
|
|
24
26
|
Add to `Gemfile`:
|
@@ -124,6 +126,9 @@ Below you'll find sample settings for any of supported delivery methods along wi
|
|
124
126
|
# Send messages via the Twilio REST API
|
125
127
|
config.textris_delivery_method = :twilio
|
126
128
|
|
129
|
+
# Send messages via the Nexmo API
|
130
|
+
config.textris_delivery_method = :nexmo
|
131
|
+
|
127
132
|
# Don't send anything, log messages into Rails logger
|
128
133
|
config.textris_delivery_method = :log
|
129
134
|
|
@@ -133,8 +138,8 @@ config.textris_delivery_method = :test
|
|
133
138
|
# Send e-mails instead of SMSes in order to inspect their content
|
134
139
|
config.textris_delivery_method = :mail
|
135
140
|
|
136
|
-
# Chain multiple delivery methods (e.g. to have e-mail backups of
|
137
|
-
config.textris_delivery_method = [:mail, :
|
141
|
+
# Chain multiple delivery methods (e.g. to have e-mail and log backups of messages)
|
142
|
+
config.textris_delivery_method = [:twilio, :mail, :log]
|
138
143
|
```
|
139
144
|
|
140
145
|
> Unless otherwise configured, default delivery methods will be: *log* in `development` environment, *test* in `test` environment and *mail* in `production` environment. All these come with reasonable defaults and will work with no further configuration.
|
@@ -156,6 +161,17 @@ Twilio.configure do |config|
|
|
156
161
|
end
|
157
162
|
```
|
158
163
|
|
164
|
+
#### Nexmo
|
165
|
+
|
166
|
+
In order to use Nexmo with **textris**, you need to include the `nexmo` gem in your `Gemfile`:
|
167
|
+
|
168
|
+
```ruby
|
169
|
+
gem 'nexmo'
|
170
|
+
```
|
171
|
+
|
172
|
+
The Nexmo gem uses the environment variables `NEXMO_API_KEY` and `NEXMO_API_SECRET` to authenticate with the API.
|
173
|
+
Therefore the safest way to provide authentication credentials is to set these variables in your application environment.
|
174
|
+
|
159
175
|
#### Log
|
160
176
|
|
161
177
|
**textris** logger has similar logging behavior to ActionMailer. It will log single line to *info* log with production in mind and then a couple details to *debug* log. You can change the log level for the whole output:
|
@@ -166,7 +182,7 @@ config.textris_log_level = :info
|
|
166
182
|
|
167
183
|
#### Custom delivery methods
|
168
184
|
|
169
|
-
Currently, **textris** comes with
|
185
|
+
Currently, **textris** comes with several delivery methods built-in, but you can easily implement your own. Place desired delivery class in `app/deliveries/<name>_delivery.rb` (e.g. `app/deliveries/my_provider_delivery.rb`):
|
170
186
|
|
171
187
|
```ruby
|
172
188
|
class MyProviderDelivery < Textris::Delivery::Base
|
@@ -253,3 +269,5 @@ Implementing new delivery methods in Pull Requests is strongly encouraged. Start
|
|
253
269
|
2. If delivery depends on any gems, don't add them as runtime dependencies. You can (and should in order to write complete specs) add them as development dependencies.
|
254
270
|
3. Delivery code must load without exceptions even when dependent libraries are missing. Specs should test such case (you can use `remove_const` to undefine loaded consts).
|
255
271
|
4. New deliveries are expected to have 100% test coverage. Run `COVERAGE=1 bundle exec rake spec` to generate *simplecov* coverage into the **coverage/index.html** file.
|
272
|
+
|
273
|
+
The commit in which [the log delivery was added](https://github.com/visualitypl/textris/commit/7c3231ca5eeb94cca01a3beced19a1a909299faf) is an example of delivery method addition that meets all guidelines listed above.
|
data/lib/textris.rb
CHANGED
@@ -0,0 +1,18 @@
|
|
1
|
+
module Textris
|
2
|
+
module Delivery
|
3
|
+
class Nexmo < Textris::Delivery::Base
|
4
|
+
def deliver(phone)
|
5
|
+
client.send_message(
|
6
|
+
from: message.from_phone,
|
7
|
+
to: phone,
|
8
|
+
text: message.content
|
9
|
+
)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
def client
|
14
|
+
@client ||= ::Nexmo::Client.new
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/textris/message.rb
CHANGED
@@ -41,12 +41,14 @@ module Textris
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def from
|
44
|
-
if @
|
45
|
-
|
44
|
+
if @from_phone.present?
|
45
|
+
if @from_name.present?
|
46
|
+
"#{@from_name} <#{Phony.format(@from_phone)}>"
|
47
|
+
else
|
48
|
+
Phony.format(@from_phone)
|
49
|
+
end
|
46
50
|
elsif @from_name.present?
|
47
51
|
@from_name
|
48
|
-
elsif @from_phone.present?
|
49
|
-
Phony.format(@from_phone)
|
50
52
|
end
|
51
53
|
end
|
52
54
|
|
data/lib/textris/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: textris
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karol Słuszniak
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '3.12'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: nexmo
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '2.0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '2.0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: actionmailer
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -185,6 +199,7 @@ files:
|
|
185
199
|
- lib/textris/delivery/base.rb
|
186
200
|
- lib/textris/delivery/log.rb
|
187
201
|
- lib/textris/delivery/mail.rb
|
202
|
+
- lib/textris/delivery/nexmo.rb
|
188
203
|
- lib/textris/delivery/test.rb
|
189
204
|
- lib/textris/delivery/twilio.rb
|
190
205
|
- lib/textris/message.rb
|