stripe_event 0.1.1 → 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.
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  ## stripe_event
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/integrallis/stripe_event.png?branch=master)](http://travis-ci.org/integrallis/stripe_event)
4
+
3
5
  stripe_event is built on the ActiveSupport::Notifications API. Incoming webhook requests are authenticated by retrieving the event from Stripe. Authenticated events are published to subscribers.
4
6
 
5
7
  ## Install
@@ -21,10 +23,18 @@ mount StripeEvent::Engine => "/stripe_event" # or provide a custom path
21
23
  # config/initializers/stripe.rb
22
24
  Stripe.api_key = ENV['STRIPE_API_KEY'] # Set your api key
23
25
 
24
- # Define subscriber behavior
25
26
  StripeEvent.subscribe 'charge.failed' do |event|
27
+ # Define subscriber behavior
26
28
  MyClass.handle_failed_charge(event)
27
29
  end
30
+
31
+ StripeEvent.subscribe 'customer.created', 'customer.updated' do |event|
32
+ # Handle multiple event types
33
+ end
34
+
35
+ StripeEvent.subscribe do |event|
36
+ # Handle all event types - logging, etc.
37
+ end
28
38
  ```
29
39
 
30
40
  ## Register webhook url with Stripe
data/Rakefile CHANGED
@@ -4,19 +4,24 @@ begin
4
4
  rescue LoadError
5
5
  puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
6
  end
7
- begin
8
- require 'rdoc/task'
9
- rescue LoadError
10
- require 'rdoc/rdoc'
11
- require 'rake/rdoctask'
12
- RDoc::Task = Rake::RDocTask
13
- end
14
-
15
- RDoc::Task.new(:rdoc) do |rdoc|
16
- rdoc.rdoc_dir = 'rdoc'
17
- rdoc.title = 'StripeEvent'
18
- rdoc.options << '--line-numbers'
19
- rdoc.rdoc_files.include('lib/**/*.rb')
20
- end
7
+ # begin
8
+ # require 'rdoc/task'
9
+ # rescue LoadError
10
+ # require 'rdoc/rdoc'
11
+ # require 'rake/rdoctask'
12
+ # RDoc::Task = Rake::RDocTask
13
+ # end
14
+ #
15
+ # RDoc::Task.new(:rdoc) do |rdoc|
16
+ # rdoc.rdoc_dir = 'rdoc'
17
+ # rdoc.title = 'StripeEvent'
18
+ # rdoc.options << '--line-numbers'
19
+ # rdoc.rdoc_files.include('lib/**/*.rb')
20
+ # end
21
21
 
22
22
  Bundler::GemHelper.install_tasks
23
+
24
+ require 'rake'
25
+ require 'rspec/core/rake_task'
26
+ RSpec::Core::RakeTask.new(:spec)
27
+ task :default => :spec
data/lib/stripe_event.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "stripe"
2
2
  require "stripe_event/engine"
3
+ require "stripe_event/subscriber"
3
4
  require "stripe_event/types"
4
5
 
5
6
  module StripeEvent
@@ -13,9 +14,8 @@ module StripeEvent
13
14
  ActiveSupport::Notifications.instrument(event_obj.type, :event => event_obj)
14
15
  end
15
16
 
16
- def self.subscribe(name, &block)
17
- raise InvalidEventType.new(name) if !TYPES.include?(name)
18
- ActiveSupport::Notifications.subscribe(name, proxy(&block))
17
+ def self.subscribe(*names, &block)
18
+ Subscriber.new(names, &block).register
19
19
  end
20
20
 
21
21
  def self.subscribers(name)
@@ -31,10 +31,4 @@ module StripeEvent
31
31
  def self.unsubscribe(subscriber)
32
32
  ActiveSupport::Notifications.notifier.unsubscribe(subscriber)
33
33
  end
34
-
35
- def self.proxy(&block)
36
- lambda do |name, started, finished, id, payload|
37
- block.call(payload[:event])
38
- end
39
- end
40
34
  end
@@ -0,0 +1,30 @@
1
+ module StripeEvent
2
+ class Subscriber
3
+ def initialize(names, &block)
4
+ @names = Array(names)
5
+ @block = block
6
+ ensure_valid_types!
7
+ end
8
+
9
+ def register
10
+ ActiveSupport::Notifications.subscribe(pattern, proxied_block)
11
+ end
12
+
13
+ private
14
+
15
+ def pattern
16
+ Regexp.union(@names.empty? ? TYPES : @names)
17
+ end
18
+
19
+ def proxied_block
20
+ lambda do |name, started, finished, id, payload|
21
+ @block.call(payload[:event])
22
+ end
23
+ end
24
+
25
+ def ensure_valid_types!
26
+ invalid_names = @names.select { |name| !TYPES.include?(name) }
27
+ raise InvalidEventType.new(invalid_names) if invalid_names.any?
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module StripeEvent
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stripe_event
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-07-04 00:00:00.000000000 Z
12
+ date: 2012-07-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70194009727360 !ruby/object:Gem::Requirement
16
+ requirement: &70166290190600 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70194009727360
24
+ version_requirements: *70166290190600
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: stripe
27
- requirement: &70194009726780 !ruby/object:Gem::Requirement
27
+ requirement: &70166290190080 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,40 +32,40 @@ dependencies:
32
32
  version: '1.6'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70194009726780
35
+ version_requirements: *70166290190080
36
36
  - !ruby/object:Gem::Dependency
37
- name: sqlite3
38
- requirement: &70194009726080 !ruby/object:Gem::Requirement
37
+ name: rspec-rails
38
+ requirement: &70166290189520 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
42
42
  - !ruby/object:Gem::Version
43
- version: '1.3'
43
+ version: '2.10'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70194009726080
46
+ version_requirements: *70166290189520
47
47
  - !ruby/object:Gem::Dependency
48
- name: rspec-rails
49
- requirement: &70194009725500 !ruby/object:Gem::Requirement
48
+ name: webmock
49
+ requirement: &70166290188940 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: '2.10'
54
+ version: '1.8'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70194009725500
57
+ version_requirements: *70166290188940
58
58
  - !ruby/object:Gem::Dependency
59
- name: webmock
60
- requirement: &70194009725000 !ruby/object:Gem::Requirement
59
+ name: rake
60
+ requirement: &70166290188440 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
- - - ~>
63
+ - - ! '>='
64
64
  - !ruby/object:Gem::Version
65
- version: '1.8'
65
+ version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70194009725000
68
+ version_requirements: *70166290188440
69
69
  description: Stripe webhook integration for Rails applications.
70
70
  email:
71
71
  - dwhalen@integrallis.com
@@ -77,6 +77,7 @@ files:
77
77
  - app/controllers/stripe_event/webhook_controller.rb
78
78
  - config/routes.rb
79
79
  - lib/stripe_event/engine.rb
80
+ - lib/stripe_event/subscriber.rb
80
81
  - lib/stripe_event/types.rb
81
82
  - lib/stripe_event/version.rb
82
83
  - lib/stripe_event.rb