Sha256: 90c488bd1e90a94f6de454b6e11061e024abce730b5d3c03a16efc26ab15c973
Contents?: true
Size: 1.34 KB
Versions: 1
Compression:
Stored size: 1.34 KB
Contents
# frozen_string_literal: true require_relative 'webhook_event' # ref: https://developer.intuit.com/app/developer/qbo/docs/develop/webhooks/managing-webhooks-notifications#validating-the-notification module LedgerSync module Ledgers module QuickBooksOnline class WebhookNotification attr_reader :events, :original_payload, :payload, :realm_id, :webhook def initialize(args = {}) @original_payload = args.fetch(:payload) @webhook = args.fetch(:webhook, nil) @payload = original_payload.is_a?(String) ? JSON.parse(original_payload) : original_payload @realm_id = @payload.dig('realmId') raise 'Invalid payload: Could not find realmId' if @realm_id.blank? events_payload = @payload.dig('dataChangeEvent', 'entities') raise 'Invalid payload: Could not find dataChangeEvent -> entities' unless events_payload.is_a?(Array) @events = [] events_payload.each do |event_payload| @events << WebhookEvent.new( payload: event_payload, webhook_notification: self ) end end def resources @resources ||= events.map(&:resource).compact end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ledger_sync-1.4.4 | lib/ledger_sync/ledgers/quickbooks_online/webhook_notification.rb |