Sha256: 66cd9b5da5ff2d5edad7d2062a585afbf03347ce4ddf6e2b991bc3e634939c74

Contents?: true

Size: 1.25 KB

Versions: 6

Compression:

Stored size: 1.25 KB

Contents

require 'forwardable'

module Honeybadger
  class Event
    extend Forwardable

    # The timestamp of the event
    attr_reader :ts

    # The event_type of the event
    attr_reader :event_type

    # The payload data of the event
    attr_reader :payload

    def_delegator :payload, :[]

    # @api private
    def initialize(event_type_or_payload, payload={})
      if event_type_or_payload.is_a?(String)
        @event_type = event_type_or_payload
        @payload = payload
      elsif event_type_or_payload.is_a?(Hash)
        @event_type = event_type_or_payload[:event_type] || event_type_or_payload["event_type"]
        @payload = event_type_or_payload
      end

      @ts = payload[:ts] || Time.now.utc.strftime("%FT%T.%LZ")
      @halted = false
    end

    # Halts the event and the before_event callback chain.
    #
    # Returns nothing.
    def halt!
      @halted ||= true
    end

    # @api private
    # Determines if this event will be discarded.
    def halted?
      !!@halted
    end

    # @api private
    # Template used to create JSON payload.
    #
    # @return [Hash] JSON representation of the event.
    def as_json(*args)
      payload.tap do |p|
        p[:ts] = ts
        p[:event_type] = event_type if event_type
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
honeybadger-5.14.1 lib/honeybadger/event.rb
honeybadger-5.14.0 lib/honeybadger/event.rb
honeybadger-5.13.3 lib/honeybadger/event.rb
honeybadger-5.13.2 lib/honeybadger/event.rb
honeybadger-5.13.1 lib/honeybadger/event.rb
honeybadger-5.13.0 lib/honeybadger/event.rb