notifications_opener 0.1.0 → 0.1.1
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 +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
|