panthoot 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -9
- data/README.textile +17 -13
- data/config/routes.rb +1 -1
- data/lib/panthoot.rb +1 -13
- data/lib/panthoot/app.rb +5 -3
- data/lib/panthoot/translator.rb +6 -4
- data/panthoot.gemspec +8 -9
- data/spec/requests/notifications_spec.rb +102 -26
- data/spec/spec_helper.rb +5 -2
- metadata +54 -20
- data/lib/panthoot/version.rb +0 -3
- data/spec/internal/config/initializers/panthoot.rb +0 -3
data/Gemfile
CHANGED
@@ -1,11 +1,3 @@
|
|
1
|
-
source
|
2
|
-
|
3
|
-
gem 'combustion',
|
4
|
-
:git => 'git://github.com/freelancing-god/combustion',
|
5
|
-
:ref => 'd7a6836269a8fb528bc3721e9b8c06b5a62ef3cc'
|
1
|
+
source 'https://rubygems.org'
|
6
2
|
|
7
3
|
gemspec
|
8
|
-
|
9
|
-
gem 'grape',
|
10
|
-
:git => 'git://github.com/intridea/grape.git',
|
11
|
-
:ref => '212c96cdfb253a59bc93790808c568e559d04468'
|
data/README.textile
CHANGED
@@ -8,26 +8,30 @@ h2. Usage
|
|
8
8
|
|
9
9
|
Add the gem to your Gemfile:
|
10
10
|
|
11
|
-
<pre><code>gem 'panthoot', '~> 0.0
|
11
|
+
<pre><code>gem 'panthoot', '~> 0.2.0'</code></pre>
|
12
12
|
|
13
|
-
If you're using Rails, this will automatically add a route at @/panthoot/hooks@ to capture messages from MailChimp. Otherwise, mount the Rack app @Panthoot::App@ to wherever you like. Make sure you add that URL to your MailChimp account settings, otherwise this will all be for naught.
|
13
|
+
If you're using Rails, this will automatically add a route at @/panthoot/hooks@ to capture messages from MailChimp. Otherwise, mount the Rack app @Panthoot::App.new@ to wherever you like. Make sure you add that URL to your MailChimp account settings, otherwise this will all be for naught.
|
14
14
|
|
15
15
|
The next step is to tell Panthoot that you want to be informed whenever MailChimp sends something your way. In Rails, stick the configuration in an initializer, but for Rack just make sure it's set as part of your app load process.
|
16
16
|
|
17
|
-
<pre><code>
|
18
|
-
|
17
|
+
<pre><code>ActiveSupport::Notifications.subscribe('subscribe.panthoot') do |*args|
|
18
|
+
event = ActiveSupport::Notifications::Event.new(*args)
|
19
|
+
subscription = event.payload[:subscription]
|
20
|
+
fired_at = event.payload[:fired_at]
|
21
|
+
|
22
|
+
# use subscription data however you wish
|
19
23
|
end</code></pre>
|
20
24
|
|
21
|
-
The
|
25
|
+
The above sample is just listening to new subscriptions, but there's other events as well - the event prefix matches the payload key in each case:
|
22
26
|
|
23
|
-
*
|
24
|
-
*
|
25
|
-
*
|
26
|
-
*
|
27
|
-
*
|
28
|
-
*
|
27
|
+
* subscribe
|
28
|
+
* unsubscribe
|
29
|
+
* profile_update
|
30
|
+
* email_address_change
|
31
|
+
* email_cleaned
|
32
|
+
* campaign_sending_status
|
29
33
|
|
30
|
-
As you can
|
34
|
+
As you can see in the example, each notification will provide an object with all the data from MailChimp, plus the time the notification was fired. When the notification is fired, you get to do your thing with the data provided. Have fun!
|
31
35
|
|
32
36
|
h2. Contributing
|
33
37
|
|
@@ -41,4 +45,4 @@ Pull requests without tests may be rejected purely on that basis. You've been wa
|
|
41
45
|
|
42
46
|
h2. Credits
|
43
47
|
|
44
|
-
Copyright (c)
|
48
|
+
Copyright (c) 2013, Panthoot is developed and maintained by Pat Allan on behalf of "Inspire9":http://inspire9.com, and is released under the open MIT Licence.
|
data/config/routes.rb
CHANGED
data/lib/panthoot.rb
CHANGED
@@ -1,23 +1,11 @@
|
|
1
|
-
require 'grape'
|
2
1
|
require 'hashie'
|
3
2
|
|
4
3
|
module Panthoot
|
5
|
-
|
6
|
-
yield self
|
7
|
-
end
|
8
|
-
|
9
|
-
def self.listener
|
10
|
-
@listener
|
11
|
-
end
|
12
|
-
|
13
|
-
def self.listener=(listener)
|
14
|
-
@listener = listener
|
15
|
-
end
|
4
|
+
#
|
16
5
|
end
|
17
6
|
|
18
7
|
require 'panthoot/app'
|
19
8
|
require 'panthoot/data'
|
20
9
|
require 'panthoot/translator'
|
21
|
-
require 'panthoot/version'
|
22
10
|
|
23
11
|
require 'panthoot/engine' if defined?(Rails)
|
data/lib/panthoot/app.rb
CHANGED
data/lib/panthoot/translator.rb
CHANGED
@@ -9,9 +9,9 @@ class Panthoot::Translator
|
|
9
9
|
}
|
10
10
|
|
11
11
|
LISTENER_METHODS = {
|
12
|
-
'subscribe' => 'subscribe',
|
13
|
-
'profile'
|
14
|
-
'cleaned'
|
12
|
+
'subscribe' => 'subscribe', 'unsubscribe' => 'unsubscribe',
|
13
|
+
'profile' => 'profile_update', 'upemail' => 'email_address_change',
|
14
|
+
'cleaned' => 'email_cleaned', 'campaign' => 'campaign_sending_status'
|
15
15
|
}
|
16
16
|
|
17
17
|
def self.translate!(params)
|
@@ -23,7 +23,9 @@ class Panthoot::Translator
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def translate!
|
26
|
-
|
26
|
+
key = LISTENER_METHODS[type]
|
27
|
+
ActiveSupport::Notifications.instrument "#{key}.panthoot",
|
28
|
+
key.to_sym => translated_object, :fired_at => fired_at
|
27
29
|
end
|
28
30
|
|
29
31
|
private
|
data/panthoot.gemspec
CHANGED
@@ -1,22 +1,21 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
-
require File.expand_path('../lib/panthoot/version', __FILE__)
|
3
|
-
|
4
2
|
Gem::Specification.new do |gem|
|
3
|
+
gem.name = 'panthoot'
|
5
4
|
gem.authors = ['Pat Allan']
|
6
5
|
gem.email = ['pat@freelancing-gods.com']
|
7
|
-
gem.
|
8
|
-
gem.
|
6
|
+
gem.summary = 'ActiveSupport::Notifications for MailChimp callbacks'
|
7
|
+
gem.description = 'Provides an Rack/Rails API endpoint for MailChimp callbacks with corresponding ActiveSupport::Notifications.'
|
9
8
|
gem.homepage = 'https://github.com/inspire9/panthoot'
|
10
9
|
|
11
|
-
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
12
10
|
gem.files = `git ls-files`.split("\n")
|
13
11
|
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
14
|
-
|
12
|
+
|
15
13
|
gem.require_paths = ['lib']
|
16
|
-
gem.version =
|
14
|
+
gem.version = '0.2.0'
|
17
15
|
|
18
16
|
gem.add_runtime_dependency 'hashie', '1.2.0'
|
19
17
|
|
20
|
-
gem.add_development_dependency '
|
21
|
-
gem.add_development_dependency '
|
18
|
+
gem.add_development_dependency 'combustion', '~> 0.5.0'
|
19
|
+
gem.add_development_dependency 'rails', '~> 3.2.13'
|
20
|
+
gem.add_development_dependency 'rspec-rails', '~> 2.13.2'
|
22
21
|
end
|
@@ -3,9 +3,26 @@ require 'spec_helper'
|
|
3
3
|
describe 'MailChimp Webhook Notifications' do
|
4
4
|
let(:fired_at) { Time.zone.local(2009, 3, 26, 21, 35, 57) }
|
5
5
|
|
6
|
+
def subscribe(type, &block)
|
7
|
+
ActiveSupport::Notifications.subscribe type, &block
|
8
|
+
end
|
9
|
+
|
10
|
+
before :each do
|
11
|
+
@lodged = false
|
12
|
+
end
|
13
|
+
|
14
|
+
after :each do
|
15
|
+
ActiveSupport::Notifications.unsubscribe @subscription
|
16
|
+
|
17
|
+
@lodged.should be_true
|
18
|
+
end
|
19
|
+
|
6
20
|
describe 'subscribes' do
|
7
21
|
it "sends the listener a subscription object" do
|
8
|
-
|
22
|
+
@subscription = subscribe('subscribe.panthoot') { |*args|
|
23
|
+
event = ActiveSupport::Notifications::Event.new *args
|
24
|
+
subscription = event.payload[:subscribe]
|
25
|
+
|
9
26
|
subscription.id.should == '8a25ff1d98'
|
10
27
|
subscription.list_id.should == 'a6b5da1054'
|
11
28
|
subscription.email.should == 'api@mailchimp.com'
|
@@ -17,7 +34,9 @@ describe 'MailChimp Webhook Notifications' do
|
|
17
34
|
'FNAME' => 'MailChimp',
|
18
35
|
'LNAME' => 'API'
|
19
36
|
}
|
20
|
-
|
37
|
+
|
38
|
+
@lodged = true
|
39
|
+
}
|
21
40
|
|
22
41
|
post '/panthoot/hooks', 'type' => 'subscribe',
|
23
42
|
'fired_at' => fired_at.to_s(:db), 'data[id]' => '8a25ff1d98',
|
@@ -30,7 +49,12 @@ describe 'MailChimp Webhook Notifications' do
|
|
30
49
|
end
|
31
50
|
|
32
51
|
it "sends the listener the fired at timestamp" do
|
33
|
-
|
52
|
+
@subscription = subscribe('subscribe.panthoot') { |*args|
|
53
|
+
event = ActiveSupport::Notifications::Event.new *args
|
54
|
+
event.payload[:fired_at].should == fired_at
|
55
|
+
|
56
|
+
@lodged = true
|
57
|
+
}
|
34
58
|
|
35
59
|
post '/panthoot/hooks', 'type' => 'subscribe',
|
36
60
|
'fired_at' => fired_at.to_s(:db), 'data[id]' => '8a25ff1d98',
|
@@ -45,7 +69,10 @@ describe 'MailChimp Webhook Notifications' do
|
|
45
69
|
|
46
70
|
describe 'unsubscribes' do
|
47
71
|
it "sends the listener an unsubscription object" do
|
48
|
-
|
72
|
+
@subscription = subscribe('unsubscribe.panthoot') { |*args|
|
73
|
+
event = ActiveSupport::Notifications::Event.new *args
|
74
|
+
unsubscription = event.payload[:unsubscribe]
|
75
|
+
|
49
76
|
unsubscription.action.should == 'unsub'
|
50
77
|
unsubscription.reason.should == 'manual'
|
51
78
|
unsubscription.id.should == '8a25ff1d98'
|
@@ -60,12 +87,15 @@ describe 'MailChimp Webhook Notifications' do
|
|
60
87
|
'LNAME' => 'API',
|
61
88
|
'INTERESTS' => 'Group1,Group2'
|
62
89
|
}
|
63
|
-
|
90
|
+
|
91
|
+
@lodged = true
|
92
|
+
}
|
64
93
|
|
65
94
|
post '/panthoot/hooks', 'type' => 'unsubscribe',
|
66
95
|
'fired_at' => fired_at.to_s(:db), 'data[action]' => 'unsub',
|
67
96
|
'data[reason]' => 'manual', 'data[id]' => '8a25ff1d98',
|
68
|
-
'data[list_id]' => 'a6b5da1054',
|
97
|
+
'data[list_id]' => 'a6b5da1054',
|
98
|
+
'data[email]' => 'api+unsub@mailchimp.com',
|
69
99
|
'data[email_type]' => 'html',
|
70
100
|
'data[merges][EMAIL]' => 'api@mailchimp.com',
|
71
101
|
'data[merges][FNAME]' => 'MailChimp',
|
@@ -76,12 +106,18 @@ describe 'MailChimp Webhook Notifications' do
|
|
76
106
|
end
|
77
107
|
|
78
108
|
it "sends the listener the fired at timestamp" do
|
79
|
-
|
109
|
+
@subscription = subscribe('unsubscribe.panthoot') { |*args|
|
110
|
+
event = ActiveSupport::Notifications::Event.new *args
|
111
|
+
event.payload[:fired_at].should == fired_at
|
112
|
+
|
113
|
+
@lodged = true
|
114
|
+
}
|
80
115
|
|
81
116
|
post '/panthoot/hooks', 'type' => 'unsubscribe',
|
82
117
|
'fired_at' => fired_at.to_s(:db), 'data[action]' => 'unsub',
|
83
118
|
'data[reason]' => 'manual', 'data[id]' => '8a25ff1d98',
|
84
|
-
'data[list_id]' => 'a6b5da1054',
|
119
|
+
'data[list_id]' => 'a6b5da1054',
|
120
|
+
'data[email]' => 'api+unsub@mailchimp.com',
|
85
121
|
'data[email_type]' => 'html',
|
86
122
|
'data[merges][EMAIL]' => 'api@mailchimp.com',
|
87
123
|
'data[merges][FNAME]' => 'MailChimp',
|
@@ -94,10 +130,13 @@ describe 'MailChimp Webhook Notifications' do
|
|
94
130
|
|
95
131
|
describe 'profile updates' do
|
96
132
|
it "sends the listener a profile object" do
|
97
|
-
|
133
|
+
@subscription = subscribe('profile_update.panthoot') { |*args|
|
134
|
+
event = ActiveSupport::Notifications::Event.new *args
|
135
|
+
profile = event.payload[:profile_update]
|
136
|
+
|
98
137
|
profile.id.should == '8a25ff1d98'
|
99
138
|
profile.list_id.should == 'a6b5da1054'
|
100
|
-
profile.email.should == 'api
|
139
|
+
profile.email.should == 'api@mailchimp.com'
|
101
140
|
profile.email_type.should == 'html'
|
102
141
|
profile.ip_opt.should == '10.20.10.30'
|
103
142
|
profile.merges.should == {
|
@@ -106,11 +145,14 @@ describe 'MailChimp Webhook Notifications' do
|
|
106
145
|
'LNAME' => 'API',
|
107
146
|
'INTERESTS' => 'Group1,Group2'
|
108
147
|
}
|
109
|
-
|
148
|
+
|
149
|
+
@lodged = true
|
150
|
+
}
|
110
151
|
|
111
152
|
post '/panthoot/hooks', 'type' => 'profile',
|
112
153
|
'fired_at' => fired_at.to_s(:db), 'data[id]' => '8a25ff1d98',
|
113
|
-
'data[list_id]' => 'a6b5da1054',
|
154
|
+
'data[list_id]' => 'a6b5da1054',
|
155
|
+
'data[email]' => 'api@mailchimp.com',
|
114
156
|
'data[email_type]' => 'html',
|
115
157
|
'data[merges][EMAIL]' => 'api@mailchimp.com',
|
116
158
|
'data[merges][FNAME]' => 'MailChimp',
|
@@ -120,11 +162,17 @@ describe 'MailChimp Webhook Notifications' do
|
|
120
162
|
end
|
121
163
|
|
122
164
|
it "sends the listener the fired at timestamp" do
|
123
|
-
|
165
|
+
@subscription = subscribe('profile_update.panthoot') { |*args|
|
166
|
+
event = ActiveSupport::Notifications::Event.new *args
|
167
|
+
event.payload[:fired_at].should == fired_at
|
168
|
+
|
169
|
+
@lodged = true
|
170
|
+
}
|
124
171
|
|
125
172
|
post '/panthoot/hooks', 'type' => 'profile',
|
126
173
|
'fired_at' => fired_at.to_s(:db), 'data[id]' => '8a25ff1d98',
|
127
|
-
'data[list_id]' => 'a6b5da1054',
|
174
|
+
'data[list_id]' => 'a6b5da1054',
|
175
|
+
'data[email]' => 'api@mailchimp.com',
|
128
176
|
'data[email_type]' => 'html',
|
129
177
|
'data[merges][EMAIL]' => 'api@mailchimp.com',
|
130
178
|
'data[merges][FNAME]' => 'MailChimp',
|
@@ -136,12 +184,17 @@ describe 'MailChimp Webhook Notifications' do
|
|
136
184
|
|
137
185
|
describe 'email address changes' do
|
138
186
|
it "sends the listener an email address change object" do
|
139
|
-
|
187
|
+
@subscription = subscribe('email_address_change.panthoot') { |*args|
|
188
|
+
event = ActiveSupport::Notifications::Event.new *args
|
189
|
+
email_change = event.payload[:email_address_change]
|
190
|
+
|
140
191
|
email_change.list_id.should == 'a6b5da1054'
|
141
192
|
email_change.new_id.should == '51da8c3259'
|
142
193
|
email_change.new_email.should == 'api+new@mailchimp.com'
|
143
194
|
email_change.old_email.should == 'api+old@mailchimp.com'
|
144
|
-
|
195
|
+
|
196
|
+
@lodged = true
|
197
|
+
}
|
145
198
|
|
146
199
|
post '/panthoot/hooks', 'type' => 'upemail',
|
147
200
|
'fired_at' => fired_at.to_s(:db), 'data[list_id]' => 'a6b5da1054',
|
@@ -151,8 +204,12 @@ describe 'MailChimp Webhook Notifications' do
|
|
151
204
|
end
|
152
205
|
|
153
206
|
it "sends the listener the fired at timestamp" do
|
154
|
-
|
155
|
-
|
207
|
+
@subscription = subscribe('email_address_change.panthoot') { |*args|
|
208
|
+
event = ActiveSupport::Notifications::Event.new *args
|
209
|
+
event.payload[:fired_at].should == fired_at
|
210
|
+
|
211
|
+
@lodged = true
|
212
|
+
}
|
156
213
|
|
157
214
|
post '/panthoot/hooks', 'type' => 'upemail',
|
158
215
|
'fired_at' => fired_at.to_s(:db), 'data[list_id]' => 'a6b5da1054',
|
@@ -164,12 +221,17 @@ describe 'MailChimp Webhook Notifications' do
|
|
164
221
|
|
165
222
|
describe 'cleaned emails' do
|
166
223
|
it "sends the listener a cleaned email object" do
|
167
|
-
|
224
|
+
@subscription = subscribe('email_cleaned.panthoot') { |*args|
|
225
|
+
event = ActiveSupport::Notifications::Event.new *args
|
226
|
+
cleaned = event.payload[:email_cleaned]
|
227
|
+
|
168
228
|
cleaned.list_id.should == 'a6b5da1054'
|
169
229
|
cleaned.campaign_id.should == '4fjk2ma9xd'
|
170
230
|
cleaned.reason.should == 'hard'
|
171
231
|
cleaned.email.should == 'api+cleaned@mailchimp.com'
|
172
|
-
|
232
|
+
|
233
|
+
@lodged = true
|
234
|
+
}
|
173
235
|
|
174
236
|
post '/panthoot/hooks', 'type' => 'cleaned',
|
175
237
|
'fired_at' => fired_at.to_s(:db), 'data[list_id]' => 'a6b5da1054',
|
@@ -178,7 +240,12 @@ describe 'MailChimp Webhook Notifications' do
|
|
178
240
|
end
|
179
241
|
|
180
242
|
it "sends the listener the fired at timestamp" do
|
181
|
-
|
243
|
+
@subscription = subscribe('email_cleaned.panthoot') { |*args|
|
244
|
+
event = ActiveSupport::Notifications::Event.new *args
|
245
|
+
event.payload[:fired_at].should == fired_at
|
246
|
+
|
247
|
+
@lodged = true
|
248
|
+
}
|
182
249
|
|
183
250
|
post '/panthoot/hooks', 'type' => 'cleaned',
|
184
251
|
'fired_at' => fired_at.to_s(:db), 'data[list_id]' => 'a6b5da1054',
|
@@ -187,15 +254,20 @@ describe 'MailChimp Webhook Notifications' do
|
|
187
254
|
end
|
188
255
|
end
|
189
256
|
|
190
|
-
describe '
|
257
|
+
describe 'campaign sending status' do
|
191
258
|
it "sends the listener a campaign sending status object" do
|
192
|
-
|
259
|
+
@subscription = subscribe('campaign_sending_status.panthoot') { |*args|
|
260
|
+
event = ActiveSupport::Notifications::Event.new *args
|
261
|
+
status = event.payload[:campaign_sending_status]
|
262
|
+
|
193
263
|
status.id.should == '5aa2102003'
|
194
264
|
status.subject.should == 'Test Campaign Subject'
|
195
265
|
status.status.should == 'sent'
|
196
266
|
status.reason.should == ''
|
197
267
|
status.list_id.should == 'a6b5da1054'
|
198
|
-
|
268
|
+
|
269
|
+
@lodged = true
|
270
|
+
}
|
199
271
|
|
200
272
|
post '/panthoot/hooks', 'type' => 'campaign',
|
201
273
|
'fired_at' => fired_at.to_s(:db), 'data[list_id]' => 'a6b5da1054',
|
@@ -204,8 +276,12 @@ describe 'MailChimp Webhook Notifications' do
|
|
204
276
|
end
|
205
277
|
|
206
278
|
it "sends the listener the fired at timestamp" do
|
207
|
-
|
208
|
-
|
279
|
+
@subscription = subscribe('campaign_sending_status.panthoot') { |*args|
|
280
|
+
event = ActiveSupport::Notifications::Event.new *args
|
281
|
+
event.payload[:fired_at].should == fired_at
|
282
|
+
|
283
|
+
@lodged = true
|
284
|
+
}
|
209
285
|
|
210
286
|
post '/panthoot/hooks', 'type' => 'campaign',
|
211
287
|
'fired_at' => fired_at.to_s(:db), 'data[list_id]' => 'a6b5da1054',
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: panthoot
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,42 +9,74 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-05-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hashie
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- - =
|
19
|
+
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 1.2.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - '='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 1.2.0
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: combustion
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.5.0
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.5.0
|
25
46
|
- !ruby/object:Gem::Dependency
|
26
47
|
name: rails
|
27
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
28
49
|
none: false
|
29
50
|
requirements:
|
30
|
-
- -
|
51
|
+
- - ~>
|
31
52
|
- !ruby/object:Gem::Version
|
32
|
-
version: 3.2.
|
53
|
+
version: 3.2.13
|
33
54
|
type: :development
|
34
55
|
prerelease: false
|
35
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 3.2.13
|
36
62
|
- !ruby/object:Gem::Dependency
|
37
63
|
name: rspec-rails
|
38
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
39
65
|
none: false
|
40
66
|
requirements:
|
41
|
-
- -
|
67
|
+
- - ~>
|
42
68
|
- !ruby/object:Gem::Version
|
43
|
-
version: 2.
|
69
|
+
version: 2.13.2
|
44
70
|
type: :development
|
45
71
|
prerelease: false
|
46
|
-
version_requirements:
|
47
|
-
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ~>
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 2.13.2
|
78
|
+
description: Provides an Rack/Rails API endpoint for MailChimp callbacks with corresponding
|
79
|
+
ActiveSupport::Notifications.
|
48
80
|
email:
|
49
81
|
- pat@freelancing-gods.com
|
50
82
|
executables: []
|
@@ -70,10 +102,8 @@ files:
|
|
70
102
|
- lib/panthoot/data/unsubscription.rb
|
71
103
|
- lib/panthoot/engine.rb
|
72
104
|
- lib/panthoot/translator.rb
|
73
|
-
- lib/panthoot/version.rb
|
74
105
|
- panthoot.gemspec
|
75
106
|
- spec/internal/app/listeners/mail_chimp_listener.rb
|
76
|
-
- spec/internal/config/initializers/panthoot.rb
|
77
107
|
- spec/internal/config/routes.rb
|
78
108
|
- spec/internal/log/.gitignore
|
79
109
|
- spec/internal/public/favicon.ico
|
@@ -91,24 +121,28 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
91
121
|
- - ! '>='
|
92
122
|
- !ruby/object:Gem::Version
|
93
123
|
version: '0'
|
124
|
+
segments:
|
125
|
+
- 0
|
126
|
+
hash: -426635896039990755
|
94
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
128
|
none: false
|
96
129
|
requirements:
|
97
130
|
- - ! '>='
|
98
131
|
- !ruby/object:Gem::Version
|
99
132
|
version: '0'
|
133
|
+
segments:
|
134
|
+
- 0
|
135
|
+
hash: -426635896039990755
|
100
136
|
requirements: []
|
101
137
|
rubyforge_project:
|
102
|
-
rubygems_version: 1.8.
|
138
|
+
rubygems_version: 1.8.23
|
103
139
|
signing_key:
|
104
140
|
specification_version: 3
|
105
|
-
summary:
|
141
|
+
summary: ActiveSupport::Notifications for MailChimp callbacks
|
106
142
|
test_files:
|
107
143
|
- spec/internal/app/listeners/mail_chimp_listener.rb
|
108
|
-
- spec/internal/config/initializers/panthoot.rb
|
109
144
|
- spec/internal/config/routes.rb
|
110
145
|
- spec/internal/log/.gitignore
|
111
146
|
- spec/internal/public/favicon.ico
|
112
147
|
- spec/requests/notifications_spec.rb
|
113
148
|
- spec/spec_helper.rb
|
114
|
-
has_rdoc:
|
data/lib/panthoot/version.rb
DELETED