Sha256: fa738db2a9c6318274d182ab689b432a462a42f28e57a0296a040d156eb80508

Contents?: true

Size: 1.15 KB

Versions: 14

Compression:

Stored size: 1.15 KB

Contents

module WebhookSystem

  # This is the model holding on to all webhook responses
  class EventLog < ActiveRecord::Base
    self.table_name = 'webhook_event_logs'

    MAX_JSON_ATTRIBUTE_SIZE = 40_000

    belongs_to :subscription, class_name: 'WebhookSystem::Subscription'

    validates :event_id, presence: true
    validates :subscription_id, presence: true
    validates :event_name, presence: true
    validates :status, presence: true

    serialize :request, JSON
    serialize :response, JSON

    def self.construct(subscription, event, request, response)
      request_info = {
        'event' => event,
        'headers' => request.headers.to_hash,
        'body' => request.body.truncate(MAX_JSON_ATTRIBUTE_SIZE),
        'url' => request.path,
      }
      response_info = {
        'headers' => response.headers.to_hash,
        'body' => response.body.truncate(MAX_JSON_ATTRIBUTE_SIZE),
      }

      attributes = {
        event_name: event['event_name'],
        event_id: event['event_id'],
        status: response.status,
        request: request_info,
        response: response_info,
      }
      subscription.event_logs.build(attributes)
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
webhook_system-2.3.1 lib/webhook_system/event_log.rb
webhook_system-2.3.0 lib/webhook_system/event_log.rb
webhook_system-2.2.0 lib/webhook_system/event_log.rb
webhook_system-2.1.6 lib/webhook_system/event_log.rb
webhook_system-2.1.5 lib/webhook_system/event_log.rb
webhook_system-2.1.4 lib/webhook_system/event_log.rb
webhook_system-2.1.3 lib/webhook_system/event_log.rb
webhook_system-2.1.2 lib/webhook_system/event_log.rb
webhook_system-2.1.1 lib/webhook_system/event_log.rb
webhook_system-2.1.0 lib/webhook_system/event_log.rb
webhook_system-2.0.0 lib/webhook_system/event_log.rb
webhook_system-1.0.4 lib/webhook_system/event_log.rb
webhook_system-1.0.3 lib/webhook_system/event_log.rb
webhook_system-1.0.2 lib/webhook_system/event_log.rb