actionmessage 0.0.12 → 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/README.md +43 -13
- data/lib/action_message.rb +1 -0
- data/lib/action_message/base.rb +6 -6
- data/lib/action_message/interceptor.rb +35 -0
- data/lib/action_message/message.rb +8 -2
- data/lib/action_message/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce7496587f302af7f1961a4b08737a5644128544
|
4
|
+
data.tar.gz: c00de1183c0530935dde4bd471d22dcd2470f9b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6660e21bd4ff00d3d5421139ec3ca1ea7634bd7a3adea554cca9dbc4043d55117384b4ea6362592319a0daa174da3a503a830aff0b60bce1e5ded77d2f5c7962
|
7
|
+
data.tar.gz: 4bd24eb4d565c2e29196fbcc841676ed535dcd65a46fb687677a023cf879deb8c6b242a879523ece6aa4cd37010c2f6d0c92a6f8e68760b1502b44c461a8b924
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -9,7 +9,7 @@ Pull requests are more than welcome!
|
|
9
9
|
[![codecov](https://codecov.io/gh/dballona/actionmessage/branch/master/graph/badge.svg)](https://codecov.io/gh/dballona/actionmessage)
|
10
10
|
[![Code Climate](https://codeclimate.com/github/dballona/actionmessage/badges/gpa.svg)](https://codeclimate.com/github/dballona/actionmessage)
|
11
11
|
|
12
|
-
##
|
12
|
+
## Setup
|
13
13
|
|
14
14
|
Install it using bundler:
|
15
15
|
|
@@ -24,27 +24,29 @@ If you're using Rails, place this on your environment file or application.rb
|
|
24
24
|
require 'action_message/railtie'
|
25
25
|
|
26
26
|
config.action_message = {
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
27
|
+
from: "number to send from in international format, e.g.: +11231231234",
|
28
|
+
adapter: {
|
29
|
+
name: :twilio,
|
30
|
+
credentials: {
|
31
|
+
account_sid: 'MY TWILIO ACCOUNT SID'.freeze,
|
32
|
+
auth_token: 'MY AUTH TOKEN'.freeze
|
33
|
+
}
|
34
|
+
}
|
35
35
|
}
|
36
36
|
```
|
37
37
|
|
38
|
+
## Usage
|
39
|
+
|
38
40
|
In order to generate your message class, you can either place this code
|
39
41
|
under app/messages/welcome_message.rb or just use our generators by running
|
40
42
|
the following command: `rails g message Welcome send_welcome_sms`
|
41
43
|
|
42
44
|
```ruby
|
43
45
|
class WelcomeMessage < ActionMessage::Base
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
46
|
+
def send_welcome_sms(name, phone_number_to_send_message)
|
47
|
+
@name = name
|
48
|
+
sms(to: phone_number_to_send_message)
|
49
|
+
end
|
48
50
|
end
|
49
51
|
```
|
50
52
|
|
@@ -53,3 +55,31 @@ Define your views under your view path, such as: app/views/welcome_message/send_
|
|
53
55
|
```html
|
54
56
|
Welcome, <%= @name %>!
|
55
57
|
```
|
58
|
+
|
59
|
+
And to send is really simple!
|
60
|
+
|
61
|
+
```ruby
|
62
|
+
name = 'John Doe'
|
63
|
+
phone = '+11231231234'
|
64
|
+
|
65
|
+
# To send right away:
|
66
|
+
WelcomeMessage.send_welcome_sms(name, phone).deliver_now
|
67
|
+
|
68
|
+
# To send through a background job
|
69
|
+
WelcomeMessage.send_welcome_sms(name, phone).deliver_later
|
70
|
+
```
|
71
|
+
|
72
|
+
## Interceptors
|
73
|
+
|
74
|
+
In order to prevent sending messages to a specific number or containing any specific text on it's body you can use Interceptors:
|
75
|
+
|
76
|
+
```ruby
|
77
|
+
# You can use strings (exact comparison)
|
78
|
+
ActionMessage::Interceptor.register(to: 'number I want to prevent sending messages')
|
79
|
+
|
80
|
+
# Regular expressions
|
81
|
+
ActionMessage::Interceptor.register(body: /something innapropriate/i)
|
82
|
+
|
83
|
+
# Pass Multiple arguments on the same call
|
84
|
+
ActionMessage::Interceptor.register(to: '+11231231234', body: /anything/i)
|
85
|
+
```
|
data/lib/action_message.rb
CHANGED
@@ -3,6 +3,7 @@ require 'abstract_controller'
|
|
3
3
|
require 'action_message/adapters'
|
4
4
|
require 'action_message/base'
|
5
5
|
require 'action_message/delivery_job'
|
6
|
+
require 'action_message/interceptor'
|
6
7
|
require 'action_message/message'
|
7
8
|
require 'action_message/message_delivery'
|
8
9
|
require 'action_message/version'
|
data/lib/action_message/base.rb
CHANGED
@@ -38,10 +38,10 @@ module ActionMessage
|
|
38
38
|
|
39
39
|
def base_paths
|
40
40
|
%w(
|
41
|
-
app/views
|
42
|
-
app/views/messages
|
43
|
-
app/views/mailers
|
44
|
-
app/views/application
|
41
|
+
app/views
|
42
|
+
app/views/messages
|
43
|
+
app/views/mailers
|
44
|
+
app/views/application
|
45
45
|
app/views/layouts
|
46
46
|
).freeze
|
47
47
|
end
|
@@ -67,13 +67,13 @@ module ActionMessage
|
|
67
67
|
|
68
68
|
self.template_name = params[:template_name].presence || template_name
|
69
69
|
self.template_path = params[:template_path].presence || template_path
|
70
|
-
|
70
|
+
|
71
71
|
@_message_was_called = true
|
72
72
|
lookup_context.view_paths = (lookup_context.view_paths.to_a + self.class.base_paths).flatten.uniq
|
73
73
|
|
74
74
|
message.to = params[:to]
|
75
75
|
message.debug = params[:debug]
|
76
|
-
message.body = render(full_template_path)
|
76
|
+
message.body = params[:body] || render(full_template_path)
|
77
77
|
|
78
78
|
message
|
79
79
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module ActionMessage
|
2
|
+
class Interceptor
|
3
|
+
cattr_accessor :blacklist
|
4
|
+
self.blacklist = {}
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def register(conditions={})
|
8
|
+
raise TypeError, 'Invalid type. Please provide a hash object' unless conditions.methods.include?(:key)
|
9
|
+
|
10
|
+
conditions.each do |attribute, condition|
|
11
|
+
@@blacklist[attribute.to_sym] ||= []
|
12
|
+
@@blacklist[attribute.to_sym].push(condition)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
|
17
|
+
def registered_for?(message)
|
18
|
+
@@blacklist.each do |attribute, conditions|
|
19
|
+
value = message.send(attribute.to_sym)
|
20
|
+
|
21
|
+
conditions.each do |condition|
|
22
|
+
return true if value.send(match_method_for(condition), condition)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
return false
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def match_method_for(condition)
|
31
|
+
condition.is_a?(Regexp)? :=~ : :==
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -14,8 +14,14 @@ module ActionMessage
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def deliver
|
17
|
-
|
18
|
-
# add
|
17
|
+
if debug?
|
18
|
+
# TODO: add log
|
19
|
+
return nil
|
20
|
+
elsif Interceptor.registered_for?(self)
|
21
|
+
# TODO: add log
|
22
|
+
return nil
|
23
|
+
else
|
24
|
+
# TODO: add logger 'Sending message from "number" to "number"'
|
19
25
|
adapter.send_message(body, to: to)
|
20
26
|
end
|
21
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: actionmessage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Diego Ballona
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-06-
|
11
|
+
date: 2017-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionpack
|
@@ -160,6 +160,7 @@ files:
|
|
160
160
|
- lib/action_message/adapters/twilio.rb
|
161
161
|
- lib/action_message/base.rb
|
162
162
|
- lib/action_message/delivery_job.rb
|
163
|
+
- lib/action_message/interceptor.rb
|
163
164
|
- lib/action_message/message.rb
|
164
165
|
- lib/action_message/message_delivery.rb
|
165
166
|
- lib/action_message/railtie.rb
|