module ActiveWebhook::Callbacks

Constants

SUPPORTED_CALLBACKS

Public Instance Methods

trigger_created_webhook() click to toggle source
# File lib/active_webhook/callbacks.rb, line 32
def trigger_created_webhook
  trigger_webhook(:created)
end
trigger_deleted_webhook() click to toggle source
# File lib/active_webhook/callbacks.rb, line 40
def trigger_deleted_webhook
  trigger_webhook(:deleted)
end
trigger_updated_webhook() click to toggle source
# File lib/active_webhook/callbacks.rb, line 36
def trigger_updated_webhook
  trigger_webhook(:updated) unless previous_changes.empty?
end
trigger_webhook(key, version: nil, type: 'resource', **context) click to toggle source
# File lib/active_webhook/callbacks.rb, line 44
def trigger_webhook(key, version: nil, type: 'resource', **context)
  key = [self.class.name.underscore, key].join("/") unless key.is_a?(String)
  context[:resource_id] ||= id
  context[:resource_type] ||= self.class.name

  ActiveWebhook.trigger(key: key, version: version, type: type, **context)
end
trigger_webhooks(version: nil, only: nil, except: [], **_options) click to toggle source
# File lib/active_webhook/callbacks.rb, line 11
def trigger_webhooks(version: nil, only: nil, except: [], **_options)
  callbacks = if only.nil?
    SUPPORTED_CALLBACKS
  else
    Array.wrap(only).map(&:to_sym)
  end - Array.wrap(except).map(&:to_sym)

  callbacks.each do |callback|
    unless SUPPORTED_CALLBACKS.include? callback
      raise InvalidCallbackError, "Invalid callback: #{callback}. Must be one of #{SUPPORTED_CALLBACKS}."
    end
  end

  after_commit :trigger_created_webhook, on: :create if callbacks.include?(:created)

  after_commit :trigger_updated_webhook, on: :update if callbacks.include?(:updated)

  after_commit :trigger_deleted_webhook, on: :destroy if callbacks.include?(:deleted)
end