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 CHANGED
@@ -1,11 +1,3 @@
1
- source :rubygems
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.1'</code></pre>
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>Panthoot.configure do |config|
18
- config.listener = MailChimpListener
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 listener class is something you'll need to define. You can call this class whatever you like, but it should respond to the following methods:
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
- * #subscribe(subscription, fired_at)
24
- * #unsubscribe(unsubscription, fired_at)
25
- * #profile_update(update, fired_at)
26
- * #email_address_change(change, fired_at)
27
- * #email_cleaned(clean, fired_at)
28
- * #campaign_sending_status(status, fired_at)
27
+ * subscribe
28
+ * unsubscribe
29
+ * profile_update
30
+ * email_address_change
31
+ * email_cleaned
32
+ * campaign_sending_status
29
33
 
30
- As you can probably guess from the method signatures, each notification will provide an object with all the data from MailChimp, plus the time the notification was fired. When the methods get called, you get to do your thing with the data provided. Have fun!
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) 2012, Panthoot is developed and maintained by Pat Allan on behalf of "Inspire9":http://inspire9.com, and is released under the open MIT Licence.
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
@@ -1,3 +1,3 @@
1
1
  Rails.application.routes.draw do
2
- mount Panthoot::App => '/panthoot/hooks'
2
+ mount Panthoot::App.new => '/panthoot/hooks'
3
3
  end
data/lib/panthoot.rb CHANGED
@@ -1,23 +1,11 @@
1
- require 'grape'
2
1
  require 'hashie'
3
2
 
4
3
  module Panthoot
5
- def self.configure
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
@@ -1,5 +1,7 @@
1
- class Panthoot::App < Grape::API
2
- post do
3
- Panthoot::Translator.translate! params
1
+ class Panthoot::App
2
+ def call(env)
3
+ Panthoot::Translator.translate! Rack::Request.new(env).params
4
+
5
+ [200, {}, [' ']]
4
6
  end
5
7
  end
@@ -9,9 +9,9 @@ class Panthoot::Translator
9
9
  }
10
10
 
11
11
  LISTENER_METHODS = {
12
- 'subscribe' => 'subscribe', 'unsubscribe' => 'unsubscribe',
13
- 'profile' => 'profile_update', 'upemail' => 'email_address_change',
14
- 'cleaned' => 'email_cleaned', 'campaign' => 'campaign_sending_status'
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
- Panthoot.listener.send LISTENER_METHODS[type], translated_object, fired_at
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.description = 'Listener for MailChimp callbacks'
8
- gem.summary = 'Provides a listener for MailChimp callbacks for Rack/Rails apps'
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
- gem.name = 'panthoot'
12
+
15
13
  gem.require_paths = ['lib']
16
- gem.version = Panthoot::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 'rails', '3.2.2'
21
- gem.add_development_dependency 'rspec-rails', '2.10.1'
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
- MailChimpListener.should_receive(:subscribe) do |subscription, fired_at|
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
- end
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
- MailChimpListener.should_receive(:subscribe).with(anything, fired_at)
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
- MailChimpListener.should_receive(:unsubscribe) do |unsubscription, fired_at|
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
- end
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', 'data[email]' => 'api@mailchimp.com',
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
- MailChimpListener.should_receive(:unsubscribe).with(anything, fired_at)
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', 'data[email]' => 'api@mailchimp.com',
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
- MailChimpListener.should_receive(:profile_update) do |profile, fired_at|
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+unsub@mailchimp.com'
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
- end
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', 'data[email]' => 'api@mailchimp.com',
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
- MailChimpListener.should_receive(:profile_update).with(anything, fired_at)
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', 'data[email]' => 'api@mailchimp.com',
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
- MailChimpListener.should_receive(:email_address_change) do |email_change, fired_at|
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
- end
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
- MailChimpListener.should_receive(:email_address_change).
155
- with(anything, fired_at)
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
- MailChimpListener.should_receive(:email_cleaned) do |cleaned, fired_at|
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
- end
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
- MailChimpListener.should_receive(:email_cleaned).with(anything, fired_at)
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 'cleaned emails' do
257
+ describe 'campaign sending status' do
191
258
  it "sends the listener a campaign sending status object" do
192
- MailChimpListener.should_receive(:campaign_sending_status) do |status, fired_at|
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
- end
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
- MailChimpListener.should_receive(:campaign_sending_status).
208
- with(anything, fired_at)
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
@@ -1,7 +1,10 @@
1
- require 'rubygems'
2
1
  require 'bundler'
3
2
 
4
- Bundler.require :default, :development
3
+ Bundler.setup :default, :development
4
+
5
+ require 'rails'
6
+ require 'combustion'
7
+ require 'panthoot'
5
8
 
6
9
  Combustion.initialize! :action_controller
7
10
 
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.1.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: 2012-05-17 00:00:00.000000000 Z
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: &70232992118500 !ruby/object:Gem::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: *70232992118500
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: &70232992110760 !ruby/object:Gem::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.2
53
+ version: 3.2.13
33
54
  type: :development
34
55
  prerelease: false
35
- version_requirements: *70232992110760
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: &70232992106780 !ruby/object:Gem::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.10.1
69
+ version: 2.13.2
44
70
  type: :development
45
71
  prerelease: false
46
- version_requirements: *70232992106780
47
- description: Listener for MailChimp callbacks
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.16
138
+ rubygems_version: 1.8.23
103
139
  signing_key:
104
140
  specification_version: 3
105
- summary: Provides a listener for MailChimp callbacks for Rack/Rails apps
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:
@@ -1,3 +0,0 @@
1
- module Panthoot
2
- VERSION = '0.1.0'
3
- end
@@ -1,3 +0,0 @@
1
- Panthoot.configure do |config|
2
- config.listener = MailChimpListener
3
- end