class Onfido::Webhook

Public Class Methods

valid?(request_body, request_signature, token) click to toggle source

As well as being a normal resource, Onfido::Webhook also supports verifying the authenticity of a webhook by comparing the signature on the request to one computed from the body

# File lib/onfido/resources/webhook.rb, line 25
def self.valid?(request_body, request_signature, token)
  if [request_body, request_signature, token].any?(&:nil?)
    raise ArgumentError, 'A request body, request signature and token ' \
                         'must be provided'
  end

  computed_signature = generate_signature(request_body, token)
  Rack::Utils.secure_compare(request_signature, computed_signature)
end

Private Class Methods

generate_signature(request_body, token) click to toggle source
# File lib/onfido/resources/webhook.rb, line 35
def self.generate_signature(request_body, token)
  OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), token, request_body)
end

Public Instance Methods

all() click to toggle source
# File lib/onfido/resources/webhook.rb, line 14
def all
  get(path: 'webhooks')
end
create(url:, **payload) click to toggle source
# File lib/onfido/resources/webhook.rb, line 5
def create(url:, **payload)
  payload[:url] = url
  post(path: 'webhooks', payload: payload)
end
destroy(webhook_id) click to toggle source
# File lib/onfido/resources/webhook.rb, line 18
def destroy(webhook_id)
  delete(path: "webhooks/#{webhook_id}")
end
find(webhooks_id) click to toggle source
# File lib/onfido/resources/webhook.rb, line 10
def find(webhooks_id)
  get(path: "webhooks/#{webhooks_id}")
end