Sha256: 1bfce5b1d6bf642819cdb2267f67c25a84a2822d90e7260950f08ad0c77eb7d9

Contents?: true

Size: 1.53 KB

Versions: 6

Compression:

Stored size: 1.53 KB

Contents

module Airbrake
  module Rails
    # Event is a wrapper around ActiveSupport::Notifications::Event.
    #
    # @since v9.0.3
    # @api private
    class Event
      # @see https://github.com/rails/rails/issues/8987
      HTML_RESPONSE_WILDCARD = "*/*".freeze

      def initialize(*args)
        @event = ActiveSupport::Notifications::Event.new(*args)
      end

      def method
        @event.payload[:method]
      end

      def response_type
        response_type = @event.payload[:format]
        response_type == HTML_RESPONSE_WILDCARD ? :html : response_type
      end

      def params
        @event.payload[:params]
      end

      def sql
        @event.payload[:sql]
      end

      def db_runtime
        @db_runtime ||= @event.payload[:db_runtime] || 0
      end

      def view_runtime
        @view_runtime ||= @event.payload[:view_runtime] || 0
      end

      def time
        @event.time
      end

      def end
        @event.end
      end

      def groups
        groups = {}
        groups[:db] = db_runtime if db_runtime > 0
        groups[:view] = view_runtime if view_runtime > 0
        groups
      end

      def status_code
        return @event.payload[:status] if @event.payload[:status]

        if @event.payload[:exception]
          status = ActionDispatch::ExceptionWrapper.status_code_for_exception(
            @event.payload[:exception].first
          )
          status = 500 if status == 0

          return status
        end

        0
      end

      def duration
        @event.duration
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
airbrake-9.4.1 lib/airbrake/rails/event.rb
airbrake-9.4.0 lib/airbrake/rails/event.rb
airbrake-9.3.0 lib/airbrake/rails/event.rb
airbrake-9.2.2 lib/airbrake/rails/event.rb
airbrake-9.2.1 lib/airbrake/rails/event.rb
airbrake-9.2.0 lib/airbrake/rails/event.rb