Class: Keinaufwand::Sync::WebhookProcessor
- Inherits:
-
Object
- Object
- Keinaufwand::Sync::WebhookProcessor
- Defined in:
- lib/keinaufwand/sync_core/webhook_processor.rb
Defined Under Namespace
Classes: InvalidPayload
Instance Method Summary collapse
-
#initialize(payload:, record_class:, receipt_class:, resources:, asset_class: nil) ⇒ WebhookProcessor
constructor
A new instance of WebhookProcessor.
- #perform ⇒ Object
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
#perform ⇒ Object
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 |