magicbell 0.1.0 → 0.2.0
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 +32 -8
- data/lib/magicbell.rb +10 -32
- data/lib/magicbell/client.rb +13 -0
- data/lib/magicbell/client/notifications.rb +20 -0
- data/lib/magicbell/user.rb +2 -1
- data/lib/magicbell/version.rb +1 -1
- metadata +4 -3
- data/lib/magicbell/init/rails.rb +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b556f6bac34d0deac121d7b456b3322f918e3f77b4e82f0cdcbd8cef395d32d1
|
4
|
+
data.tar.gz: 6a56c2b7331c5f3296293f8d2a4bbef8b785bdb762e694b506cab3ac28f21b79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6139d8789a33f4f5cb45216106d86d7f78c9b1fb9743af3115d4ff9f193035a6c3565ebca3195a130529f81d7110ee8fecbbf5790004642b13c4c56887ba53c
|
7
|
+
data.tar.gz: 5f2f592ea6a3f13500a084a468118e2bc6ad68a7d0e48a5a087e728b052fa20bd1b6e17a09faa37fe5ddaf5b55f5b4975a231f330a98421de5fdb0f806937367
|
data/README.md
CHANGED
@@ -6,10 +6,10 @@ Convert your email notifications to an in-app notification center. This gem make
|
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
9
|
-
Add the magicbell
|
9
|
+
Add the magicbell gem to your app's Gemfile
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
gem "magicbell
|
12
|
+
gem "magicbell"
|
13
13
|
```
|
14
14
|
|
15
15
|
Run
|
@@ -18,10 +18,10 @@ Run
|
|
18
18
|
bundle install
|
19
19
|
```
|
20
20
|
|
21
|
-
Create the initializer file `config/initializers/magicbell
|
21
|
+
Create the initializer file `config/initializers/magicbell.rb` and add your MagicBell credentials there.
|
22
22
|
|
23
23
|
```
|
24
|
-
vim config/initializers/magicbell
|
24
|
+
vim config/initializers/magicbell.rb
|
25
25
|
```
|
26
26
|
|
27
27
|
```ruby
|
@@ -51,11 +51,11 @@ Create the partial file `config/layouts/_magicbell.html.erb` and copy paste the
|
|
51
51
|
$('<link/>', {
|
52
52
|
rel: 'stylesheet',
|
53
53
|
type: 'text/css',
|
54
|
-
href: "<%= MagicBell
|
54
|
+
href: "<%= MagicBell::EXTRAS_CSS_URL %>"
|
55
55
|
}).appendTo('head');
|
56
56
|
$(document).ready(function () {
|
57
57
|
// Initialize the widget after fetching its javascript
|
58
|
-
$.getScript("<%= MagicBell
|
58
|
+
$.getScript("<%= MagicBell::WIDGET_JAVASCRIPT_URL %>", initializeMagicBell);
|
59
59
|
});
|
60
60
|
function initializeMagicBell() {
|
61
61
|
MagicBell.initialize({
|
@@ -186,8 +186,32 @@ function initializeMagicBell() {
|
|
186
186
|
}
|
187
187
|
```
|
188
188
|
|
189
|
-
|
189
|
+
|
190
|
+
## Managing notifications
|
191
|
+
|
192
|
+
### Creating a notification
|
193
|
+
|
194
|
+
You can create notifications for users. Once `MagicBell` is configured, you can
|
195
|
+
call `create_notification` method to create a notification for a given project.
|
196
|
+
|
197
|
+
```
|
198
|
+
params = {
|
199
|
+
to: "user@example.com",
|
200
|
+
title: "Your download is ready",
|
201
|
+
content: "Zip file to download is here",
|
202
|
+
action_url: "https://example.com/notifications/1"
|
203
|
+
}
|
204
|
+
|
205
|
+
client = MagicBell::Client.new()
|
206
|
+
client.create_notification(params)
|
207
|
+
```
|
208
|
+
|
209
|
+
The response will be a Faraday response object, and methods like `status` and
|
210
|
+
`body` will be available for further inspection.
|
211
|
+
|
212
|
+
|
213
|
+
If you'd like us to add more callbacks to the widget, reach out to us at hana@magicbell.io
|
190
214
|
|
191
215
|
## Documentation
|
192
216
|
|
193
|
-
Visit our [Docs Site](https://magicbell.
|
217
|
+
Visit our [Docs Site](https://docs.magicbell.io) for more information on MagicBell, MagicBell's widget and Advanced Features.
|
data/lib/magicbell.rb
CHANGED
@@ -1,12 +1,21 @@
|
|
1
1
|
require "magicbell/config"
|
2
2
|
require "magicbell/hmac"
|
3
3
|
require "magicbell/user"
|
4
|
+
require "magicbell/railtie" if defined?(Rails)
|
5
|
+
require "magicbell/client"
|
6
|
+
|
7
|
+
require 'forwardable'
|
4
8
|
|
5
9
|
|
6
10
|
module MagicBell
|
7
|
-
|
11
|
+
WIDGET_JAVASCRIPT_URL = "https://assets.magicbell.io/widget.magicbell.js"
|
12
|
+
EXTRAS_CSS_URL = "https://assets.magicbell.io/extras.magicbell.css"
|
8
13
|
|
9
14
|
class << self
|
15
|
+
extend Forwardable
|
16
|
+
|
17
|
+
def_delegators :@config, :api_key, :api_secret, :project_id, :magic_address, :api_host
|
18
|
+
|
10
19
|
def configure
|
11
20
|
yield(config)
|
12
21
|
end
|
@@ -19,35 +28,6 @@ module MagicBell
|
|
19
28
|
@config = nil
|
20
29
|
end
|
21
30
|
|
22
|
-
def extras_css_url
|
23
|
-
"//#{CLOUDFRONT_DOMAIN}/extras.magicbell.css"
|
24
|
-
end
|
25
|
-
alias_method :host_page_css_url, :extras_css_url # Backward compatibility
|
26
|
-
|
27
|
-
def api_host
|
28
|
-
config.api_host
|
29
|
-
end
|
30
|
-
|
31
|
-
def widget_javascript_url
|
32
|
-
"//#{CLOUDFRONT_DOMAIN}/widget.magicbell.js"
|
33
|
-
end
|
34
|
-
|
35
|
-
def api_key
|
36
|
-
config.api_key
|
37
|
-
end
|
38
|
-
|
39
|
-
def api_secret
|
40
|
-
config.api_secret
|
41
|
-
end
|
42
|
-
|
43
|
-
def project_id
|
44
|
-
config.project_id
|
45
|
-
end
|
46
|
-
|
47
|
-
def magic_address
|
48
|
-
config.magic_address
|
49
|
-
end
|
50
|
-
|
51
31
|
def project_specific_headers
|
52
32
|
{
|
53
33
|
'X-MAGICBELL-API-KEY' => config.api_key,
|
@@ -61,5 +41,3 @@ module MagicBell
|
|
61
41
|
end
|
62
42
|
end
|
63
43
|
end
|
64
|
-
|
65
|
-
require "magicbell/railtie"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "magicbell/client/notifications"
|
2
|
+
|
3
|
+
module MagicBell
|
4
|
+
class Client
|
5
|
+
include MagicBell::Client::Notifications
|
6
|
+
|
7
|
+
# Returns an authenticated connection object which can be
|
8
|
+
# used to make requests
|
9
|
+
def connection
|
10
|
+
@connection ||= Faraday.new(url: MagicBell.api_host)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module MagicBell
|
2
|
+
class Client
|
3
|
+
module Notifications
|
4
|
+
# Creates a notification for a given project
|
5
|
+
#
|
6
|
+
# @param to [String] Email of a user for this notification
|
7
|
+
# @param title [String] Title of the notification
|
8
|
+
# @param content [String] Content of the notification
|
9
|
+
# @param action_url [String] Url to redirect to from widget
|
10
|
+
def create_notification(to, title, content, action_url)
|
11
|
+
params = {to: to, title: title, content: content, action_url: action_url}
|
12
|
+
|
13
|
+
connection.post("/notifications.json") do |req|
|
14
|
+
req.headers = {"X-MAGICBELL-API-SECRET" => MagicBell.api_secret}
|
15
|
+
req.body = {notification: params}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/magicbell/user.rb
CHANGED
data/lib/magicbell/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: magicbell
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hana Mohan
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-04-
|
12
|
+
date: 2020-04-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -80,9 +80,10 @@ files:
|
|
80
80
|
- Rakefile
|
81
81
|
- lib/magicbell.rb
|
82
82
|
- lib/magicbell/action_mailer_extension.rb
|
83
|
+
- lib/magicbell/client.rb
|
84
|
+
- lib/magicbell/client/notifications.rb
|
83
85
|
- lib/magicbell/config.rb
|
84
86
|
- lib/magicbell/hmac.rb
|
85
|
-
- lib/magicbell/init/rails.rb
|
86
87
|
- lib/magicbell/railtie.rb
|
87
88
|
- lib/magicbell/user.rb
|
88
89
|
- lib/magicbell/version.rb
|
data/lib/magicbell/init/rails.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'rails'
|
2
|
-
require 'yaml'
|
3
|
-
|
4
|
-
module MagicBell
|
5
|
-
module Init
|
6
|
-
module Rails
|
7
|
-
class Railtie < ::Rails::Railtie
|
8
|
-
#rake_tasks do
|
9
|
-
# load 'magicbell/tasks.rb'
|
10
|
-
#end
|
11
|
-
|
12
|
-
config.after_initialize do
|
13
|
-
MagicBell.init!({
|
14
|
-
:root => ::Rails.root.to_s,
|
15
|
-
:env => ::Rails.env,
|
16
|
-
:'config.path' => ::Rails.root.join('config', 'magicbell.yml'),
|
17
|
-
:logger => Logging::FormattedLogger.new(::Rails.logger),
|
18
|
-
:framework => :rails
|
19
|
-
})
|
20
|
-
MagicBell.load_plugins!
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
MagicBell.install_at_exit_callback
|