Module: Lipwa::Webhook

Extended by:
Dry::Container::Mixin
Defined in:
lib/lipwa/webhook.rb

Overview

Inbound-callback parsing/verification, pluggable per provider. Providers register a parser once (typically at load time — see Lipwa::Webhooks::Mpesa); consumers call Lipwa::Webhook.parse_webhook instead of hand-rolling per-provider payload parsing in their controllers.

Class Method Summary collapse

Class Method Details

.parse_webhook(provider:, body:, headers: {}) ⇒ Object



59
60
61
62
63
64
65
# File 'lib/lipwa/webhook.rb', line 59

def parse_webhook(provider:, body:, headers: {})
  Success(resolve(provider.to_sym).call(body: body, headers: headers))
rescue Dry::Container::KeyError
  raise Lipwa::UnsupportedProviderError, "no webhook parser registered for #{provider.inspect}"
rescue JSON::ParserError => e
  Failure(Lipwa::WebhookParseError.new(e.message))
end

.register(provider, parser) ⇒ Object



55
56
57
# File 'lib/lipwa/webhook.rb', line 55

def register(provider, parser)
  super(provider.to_sym, parser)
end