mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
39 lines
755 B
Ruby
39 lines
755 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Stripe
|
|
class WebhookHandler
|
|
def initialize(event)
|
|
@event = event
|
|
end
|
|
|
|
def handle
|
|
return :unknown unless known_event?
|
|
|
|
__send__(event_mappings[@event.type])
|
|
end
|
|
|
|
private
|
|
|
|
def event_mappings
|
|
{
|
|
"account.application.deauthorized" => :deauthorize
|
|
}
|
|
end
|
|
|
|
def known_event?
|
|
event_mappings.key?(@event.type)
|
|
end
|
|
|
|
def deauthorize
|
|
return :ignored unless @event.respond_to?(:account)
|
|
|
|
destroyed = destroy_stripe_accounts_linked_to(@event.account)
|
|
destroyed.any? ? :success : :ignored
|
|
end
|
|
|
|
def destroy_stripe_accounts_linked_to(account)
|
|
StripeAccount.where(stripe_user_id: account).destroy_all
|
|
end
|
|
end
|
|
end
|