notifykit 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9abdc992aa8847d18c5096510e9fb61e631c070e
4
- data.tar.gz: bd54e885f1d91aac8f10e6aadb7c4ba6a2e03e52
3
+ metadata.gz: d96baaa9ac5a0a64a5f914b4a31daa06a06e2fcc
4
+ data.tar.gz: 39ac9eda71d9fe5bcfebd394d792f8d5b125b30a
5
5
  SHA512:
6
- metadata.gz: 14913d6cce4148e6bfbed2bced02f9ab3ba2a23cc994bea89ecb52d3a18e63390c0dbf880e9cd897cec1c168987bb0d3b38981efc030d3f9f8dfa97b510cd5c0
7
- data.tar.gz: 79ed46946aaf92416f05abe70ea4319a7db188e1bc026a39d2f96836c16f64bfa8dfba3e326056490dcc5b603a9c95525d58486d491b5465df1d3f0260e4e372
6
+ metadata.gz: f3156b96771dbd2806f606571727d8ad0ae82680f3c21fc9019ca478864c4ec975b7d93cfd7db6f43ea6b5b82d711c4bd25d86143090ce5e9f73ba2172626f7b
7
+ data.tar.gz: 151d51d7e9c410424d61f8f80b51ec646ebaff300b6a250854e297a14e95fb6519ea7e37e60f5e43fb12a15d50104d465c70540a2bf7874c1671c4635e5ce5fa
data/CHANGELOG.md ADDED
@@ -0,0 +1,14 @@
1
+ # Changes
2
+
3
+ Version 0.2.0
4
+ -------------
5
+ Adjust notifications_controller to allow certain actions without logging in:
6
+ - Mark as read
7
+ - Click
8
+ - Unsubscribe
9
+
10
+
11
+ Version 0.1.0
12
+ -------------
13
+ Initial release of notifykit, support for notifications and mailers and tracking
14
+
@@ -1,6 +1,7 @@
1
1
  class NotificationsController < ::ApplicationController
2
- before_filter :require_login
3
- before_filter :require_notification
2
+ before_filter :require_login, except: [:click, :read, :unsubscribe]
3
+ before_filter :require_notification, except: [:click, :read, :unsubscribe]
4
+ before_filter :require_trackable, only: [:click, :read, :unsubscribe]
4
5
 
5
6
  include NotificationsHelper
6
7
 
@@ -22,12 +23,12 @@ class NotificationsController < ::ApplicationController
22
23
  end
23
24
 
24
25
  def click
25
- notification.click
26
+ trackable.click
26
27
 
27
28
  # To prevent a bare redirect, validate that the redirect url
28
29
  # was generated when the email was sent
29
30
  target_url = params[:r]
30
- target_url = root_url if notification.email_urls.blank? || !notification.email_urls.split("\n").index(target_url)
31
+ target_url = root_url if trackable.email_urls.blank? || !trackable.email_urls.split("\n").index(target_url)
31
32
 
32
33
  respond_to do |format|
33
34
  format.json { head :no_content }
@@ -36,12 +37,12 @@ class NotificationsController < ::ApplicationController
36
37
  end
37
38
 
38
39
  def read
39
- notification.read
40
+ trackable.read
40
41
  respond_with_no_content
41
42
  end
42
43
 
43
44
  def unsubscribe
44
- notification.unsubscribe
45
+ trackable.unsubscribe
45
46
 
46
47
  # TODO you may want to improve the unsubscribe logic here
47
48
  respond_to do |format|
@@ -74,22 +75,32 @@ class NotificationsController < ::ApplicationController
74
75
  notification
75
76
  end
76
77
 
78
+ def require_trackable
79
+ trackable
80
+ end
81
+
77
82
  def notification
78
83
  return @notification if defined?(@notification)
79
84
  @notification = current_user.notifications.where(token: params[:token]).first || raise(ActiveRecord::RecordNotFound)
80
85
  end
81
86
 
87
+ def trackable
88
+ return @trackable if defined?(@trackable)
89
+ @trackable = Notification.where(token: params[:token]).first || raise(ActiveRecord::RecordNotFound)
90
+ end
91
+
82
92
  def respond_with_no_content
83
93
  respond_to do |format|
84
94
  format.json { head :no_content }
85
- format.html {
95
+ format.html { redirect_to root_url }
96
+ format.gif {
86
97
  send_data Notifykit.tracking_pixel, :filename => 'blank.gif', :type => 'image/gif', :disposition => 'inline'
87
98
  }
88
99
  end
89
100
  end
90
101
 
91
102
  def append_tracking_params(url)
92
- return url if notification.do_not_track
103
+ return url if trackable.do_not_track
93
104
  query = []
94
105
  query << "utm_campaign=#{utm_campaign}" unless url =~ /utm_campaign/
95
106
  query << "utm_medium=#{utm_medium}" unless url =~ /utm_medium/
@@ -103,7 +114,7 @@ class NotificationsController < ::ApplicationController
103
114
  end
104
115
 
105
116
  def utm_campaign
106
- notification.kind
117
+ trackable.kind
107
118
  end
108
119
 
109
120
  def utm_medium
@@ -25,13 +25,13 @@ describe NotificationsController do
25
25
 
26
26
  it "redirects the if there is no user" do
27
27
  controller.stub(:current_user).and_return(nil)
28
- get :read, valid_params
28
+ get :view, valid_params
29
29
  response.should be_redirect
30
30
  end
31
31
 
32
32
  it "returns success if there is a user" do
33
33
  controller.stub(:current_user).and_return(user)
34
- get :read, valid_params
34
+ get :view, valid_params
35
35
  response.should be_success
36
36
  end
37
37
  end
@@ -51,14 +51,14 @@ describe NotificationsController do
51
51
  expect {
52
52
  notification.user = User.create(email: "another@example.com")
53
53
  notification.save
54
- get :read, valid_params
54
+ get :view, valid_params
55
55
  }.to raise_error(ActiveRecord::RecordNotFound)
56
56
  end
57
57
 
58
58
  it "returns success if there is a notification" do
59
59
  expect {
60
60
  notification.save
61
- get :read, valid_params
61
+ get :view, valid_params
62
62
  response.should be_success
63
63
  }.not_to raise_error
64
64
  end
@@ -68,6 +68,7 @@ describe NotificationsController do
68
68
  before(:each) do
69
69
  controller.stub(:current_user).and_return(user)
70
70
  controller.stub(:notification).and_return(notification)
71
+ controller.stub(:trackable).and_return(notification)
71
72
  end
72
73
 
73
74
  describe "recent" do
@@ -122,7 +123,7 @@ describe NotificationsController do
122
123
  it "should mark the notification as read" do
123
124
  notification.should_receive(:read)
124
125
  get :read, valid_params
125
- response.should be_success
126
+ response.should redirect_to(root_url)
126
127
  end
127
128
  end
128
129
 
@@ -175,7 +176,7 @@ describe NotificationsController do
175
176
  before(:each) do
176
177
  notification.email_urls = target_url
177
178
  controller.stub(:current_user).and_return(user)
178
- controller.stub(:notification).and_return(notification)
179
+ controller.stub(:trackable).and_return(notification)
179
180
  end
180
181
 
181
182
  it "should set the utm source" do
@@ -1,3 +1,3 @@
1
1
  module Notifykit
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: notifykit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeff Rafter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-07 00:00:00.000000000 Z
11
+ date: 2014-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -74,6 +74,7 @@ extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
76
  - .gitignore
77
+ - CHANGELOG.md
77
78
  - FEATURES.md
78
79
  - Gemfile
79
80
  - LICENSE.txt