Module: ConcernsOnRails::Controllers::WebhookVerifiable::ClassMethods

Defined in:
lib/concerns_on_rails/controllers/webhook_verifiable.rb

Instance Method Summary collapse

Instance Method Details

#verify_webhook(*actions, secret:, scheme: :hex, header: nil, tolerance: nil, digest: :sha256) ⇒ Object

Declare signature verification for the given actions (none = catch-all). Each call appends a rule; the FIRST rule matching the current action wins, so declare specific rules before a catch-all.



95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/concerns_on_rails/controllers/webhook_verifiable.rb', line 95

def verify_webhook(*actions, secret:, scheme: :hex, header: nil, tolerance: nil, digest: :sha256)
  actions = actions.flatten.map(&:to_s)
  scheme = scheme.to_sym
  digest = digest.to_sym
  validate_verify_webhook!(secret: secret, scheme: scheme, header: header, tolerance: tolerance, digest: digest)

  rule = { actions: actions, secret: secret, scheme: scheme,
           header: (header || SCHEMES[scheme][:header]).to_s,
           tolerance: scheme == :stripe ? (tolerance || STRIPE_DEFAULT_TOLERANCE).to_i : nil,
           digest: digest }
  self.webhook_rules = webhook_rules + [rule]
end