Module: StripeWebhooks::Callback::ClassMethods

Included in:
StripeWebhooks::Callback
Defined in:
app/models/stripe_webhooks/callback.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#event_typesObject (readonly)

Returns the value of attribute event_types.


5
6
7
# File 'app/models/stripe_webhooks/callback.rb', line 5

def event_types
  @event_types
end

Instance Method Details

#handles_events(*event_types) ⇒ Object

Declares which event types a callback will handle

Example

class MyCallback < StripeWebhooks::Callback
  handles_events 'customer.subscription.deleted', 'customer.subscription.testing'
  def run(event)
    puts "Do useful stuff"
  end
end

32
33
34
# File 'app/models/stripe_webhooks/callback.rb', line 32

def handles_events(*event_types)
  @event_types = event_types
end

#inherited(subclass) ⇒ Object

Automatically register subclasses


38
39
40
# File 'app/models/stripe_webhooks/callback.rb', line 38

def inherited(subclass)
  StripeWebhooks.register_callback(subclass.new.label)
end

#run_callbacks_for(event_type, event) ⇒ Object

Run callbacks for a given event type

Example

StripeWebhooks::Callback.run_callbacks_for('customer.subscription.deleted', stripe_event)

13
14
15
16
17
18
19
# File 'app/models/stripe_webhooks/callback.rb', line 13

def run_callbacks_for(event_type, event)
  StripeWebhooks.callbacks.each do |label|
    class_name = "#{label.classify}Callback"
    callback = class_name.constantize.new
    callback.run_once(event) if callback.handles?(event_type)
  end
end