Class: Keinaufwand::Sync::WebhookProcessor

Inherits:
Object
  • Object
show all
Defined in:
lib/keinaufwand/sync_core/webhook_processor.rb

Defined Under Namespace

Classes: InvalidPayload

Instance Method Summary collapse

Constructor Details

#initialize(payload:, record_class:, receipt_class:, resources:, asset_class: nil) ⇒ WebhookProcessor

Returns a new instance of WebhookProcessor.



6
7
8
9
10
11
12
# File 'lib/keinaufwand/sync_core/webhook_processor.rb', line 6

def initialize(payload:, record_class:, receipt_class:, resources:, asset_class: nil)
  @payload = payload.with_indifferent_access
  @record_class = record_class
  @receipt_class = receipt_class
  @resources = resources.map(&:to_s)
  @asset_class = asset_class
end

Instance Method Details

#performObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/keinaufwand/sync_core/webhook_processor.rb', line 14

def perform
  validate_payload!
  return :duplicate if @receipt_class.exists?(event_id: event_id)
  return record_receipt!(:ignored) unless resource_type && @resources.include?(resource_type)
  return record_receipt!(:stale) if stale?

  result = @record_class.transaction do
    deleted? ? delete_record : upsert_record
    record_receipt!(deleted? ? :destroyed : :synced)
  end
  sync_assets unless deleted?
  result
rescue ActiveRecord::RecordNotUnique
  :duplicate
end