notifications_opener 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +26 -6
- data/lib/notifications_opener/interceptor.rb +12 -3
- data/lib/notifications_opener/message.rb +13 -4
- data/lib/notifications_opener/response_handler.rb +4 -0
- data/lib/notifications_opener/version.rb +1 -1
- data/lib/notifications_opener.rb +11 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73460d17fb8bd6f0f018b8fbfd7da6136adc50ea
|
4
|
+
data.tar.gz: 09bcb14762bfce0381b52c51779c51c5bda58079
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 22ee94c4749f15356b7a60ba03670e49f47fb937b036ad51db7424d32e4af07269e2898d936563480ec7ab0354c0af7633753921903e732ae8bf9bfeb1623f7d
|
7
|
+
data.tar.gz: 8ec7c6309b5a80a6b8fa854a87e0c6779e8b090d1ca86fb15e1b3a85ed8ab963b1603ed821e1346cd371a1b9699c059311b41ad4c76f64e6109b4d344528d590
|
data/README.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
#
|
1
|
+
# Notifications Opener
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
TODO: Delete this and the text above, and describe your gem
|
3
|
+
Blocks SMSs from being delivered in development. Instead opens a preview in the browser by intercepting the request to the configured SMS API.
|
6
4
|
|
7
5
|
## Installation
|
8
6
|
|
@@ -22,7 +20,29 @@ Or install it yourself as:
|
|
22
20
|
|
23
21
|
## Usage
|
24
22
|
|
25
|
-
|
23
|
+
Add the following configuration in your `development.rb`. The following is an example for springedge. It will probably differ based on your provider.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
# Blocks SMSs from being delivered in development
|
27
|
+
# Instead opens a preview in the browser by intercepting the request to
|
28
|
+
# the configured SMS API
|
29
|
+
NotificationsOpener.configure do | c |
|
30
|
+
# Param name for the sender that will be passed to the SMS API
|
31
|
+
c[:from_key_name] = "sender"
|
32
|
+
|
33
|
+
# Param name for the receiver that will be passed to the SMS API
|
34
|
+
c[:to_key_name] = "to"
|
35
|
+
|
36
|
+
# Param name for the message that will be passed to the API
|
37
|
+
c[:message_key_name] = "message"
|
38
|
+
|
39
|
+
# Location to store the preview email files, usually tmp
|
40
|
+
c[:location] = Rails.root.join("tmp").to_s
|
41
|
+
|
42
|
+
# The SMS API call to intercept
|
43
|
+
c[:url] = /.*alerts.springedge.com.*/
|
44
|
+
end
|
45
|
+
```
|
26
46
|
|
27
47
|
## Development
|
28
48
|
|
@@ -32,4 +52,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
52
|
|
33
53
|
## Contributing
|
34
54
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
55
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/abhisheksarka/notifications_opener. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
@@ -1,9 +1,14 @@
|
|
1
|
+
##
|
2
|
+
# This class represents as an interceptor for the HTTP requests to the
|
3
|
+
# specified URL
|
4
|
+
|
1
5
|
require 'webmock'
|
2
6
|
require 'rack'
|
3
7
|
|
4
|
-
|
8
|
+
##
|
5
9
|
# On requiring webmock it disables HTTP connections by default
|
6
|
-
# so we need to call this method after requiring it
|
10
|
+
# so we need to call this method after requiring it, since we only
|
11
|
+
# want stub the url that has been passed in the configuration
|
7
12
|
WebMock.allow_net_connect!
|
8
13
|
|
9
14
|
module NotificationsOpener
|
@@ -14,9 +19,13 @@ module NotificationsOpener
|
|
14
19
|
def initialize(config)
|
15
20
|
@config = config
|
16
21
|
@response_handler = ResponseHandler.new(config)
|
17
|
-
intercept_and_redirect_to_rack_app
|
18
22
|
end
|
19
23
|
|
24
|
+
##
|
25
|
+
# Stubs all HTTP requests to the specified URL
|
26
|
+
# We also need to process the response to figure
|
27
|
+
# out the sender, receiver and the message so we
|
28
|
+
# pass it on a rack application
|
20
29
|
def intercept_and_redirect_to_rack_app
|
21
30
|
WebMock.stub_request(:any, config[:url]).to_rack(response_handler)
|
22
31
|
end
|
@@ -1,3 +1,6 @@
|
|
1
|
+
##
|
2
|
+
# This class represents builds a usable message based on the parameters
|
3
|
+
|
1
4
|
require 'erb'
|
2
5
|
require 'launchy'
|
3
6
|
|
@@ -20,19 +23,25 @@ module NotificationsOpener
|
|
20
23
|
@file_path = get_file_path
|
21
24
|
end
|
22
25
|
|
26
|
+
# #
|
27
|
+
# Creates the file with the interpolated content in the specified location
|
28
|
+
# Opens it up in a browser from preview
|
23
29
|
def deliver
|
24
30
|
File.open(file_path, 'w') { | file | file.write(rendered_content) }
|
25
31
|
Launchy.open("file:///#{URI.parse(file_path)}")
|
26
32
|
end
|
27
33
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
34
|
+
# #
|
35
|
+
# Uses the message template and binds the instance variable to the template
|
36
|
+
# to generate the final markup
|
32
37
|
def rendered_content
|
33
38
|
ERB.new(template).result(binding)
|
34
39
|
end
|
35
40
|
|
41
|
+
def template
|
42
|
+
File.read(File.expand_path("../message.html.erb", __FILE__))
|
43
|
+
end
|
44
|
+
|
36
45
|
def get_file_path
|
37
46
|
location + '/' + SecureRandom.hex + '.html'
|
38
47
|
end
|
data/lib/notifications_opener.rb
CHANGED
@@ -5,11 +5,22 @@ require "notifications_opener/interceptor"
|
|
5
5
|
require 'fileutils'
|
6
6
|
|
7
7
|
module NotificationsOpener
|
8
|
+
|
9
|
+
# #
|
10
|
+
# Configure the module by passing required options
|
11
|
+
#
|
12
|
+
# * url - The SMS API URL
|
13
|
+
# * location - Generated preview files will stored here, usually tmp
|
14
|
+
# * from_key_name - The parameter name you pass to the SMS API that identifies the sender
|
15
|
+
# * to_key_name - The parameter name you pass to the SMS API that identifies the receiver
|
16
|
+
# * message_key_name - The parameter name you pass to the SMS API that identifies the message
|
8
17
|
def self.configure
|
9
18
|
c = { }
|
10
19
|
yield(c)
|
11
20
|
create_storage_directory(c)
|
12
21
|
ins = Interceptor.new(c)
|
22
|
+
ins.intercept_and_redirect_to_rack_app
|
23
|
+
ins
|
13
24
|
end
|
14
25
|
|
15
26
|
private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: notifications_opener
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- abhisheksarka
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|