docbrown/app/models/webhook/event.rb

28 lines
623 B
Ruby

module Webhook
class Event
EVENT_TYPES = %w[
article_created
article_updated
article_destroyed
].freeze
attr_reader :event_type, :payload, :timestamp, :event_id
def initialize(event_type:, payload: {})
raise InvalidEvent unless EVENT_TYPES.include?(event_type)
@event_type = event_type
@payload = payload
now = Time.current
@timestamp = now.rfc3339
@event_id = Secrets::Generator.sortable(now)
end
def as_json(*_args)
Webhook::EventSerializer.new(self).serializable_hash
end
end
class InvalidEvent < StandardError; end
end