actionmessage 0.0.12 → 0.0.13
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/.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
|
[](https://codecov.io/gh/dballona/actionmessage)
|
10
10
|
[](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
|