Sha256: caeea70809ea4d0c07432beb2fc37b8015c384886c5df26b193ae84edcffb156

Contents?: true

Size: 1.47 KB

Versions: 12

Compression:

Stored size: 1.47 KB

Contents

# Copyright (c) 2015 Sqreen. All Rights Reserved.
# Please refer to our terms for more information: https://www.sqreen.com/terms.html

require 'json'
require 'sqreen/event'

module Sqreen
  # When an exception arise it is automatically pushed to the event queue
  class RemoteException < Sqreen::Event
    def self.record(payload_or_exception)
      exception = RemoteException.new(payload_or_exception)
      exception.enqueue
    end

    def initialize(payload_or_exception)
      payload = if payload_or_exception.is_a?(Hash)
                  payload_or_exception
                else
                  { 'exception' => payload_or_exception }
                end
      super(payload)
    end

    def enqueue
      Sqreen.queue.push(self)
    end

    def klass
      payload['exception'].class.name
    end

    def to_hash
      exception = payload['exception']
      ev = {
        :klass => exception.class.name,
        :message => exception.message,
        :params => payload['request_params'],
        :time => payload['time'],
        :infos => {
          :client_ip => payload['client_ip'],
        },
        :request => payload['request_infos'],
        :headers => payload['headers'],
        :rule_name => payload['rule_name'],
        :rulespack_id => payload['rulespack_id'],
      }

      ev[:infos].merge!(payload['infos']) if payload['infos']
      return ev unless exception.backtrace
      ev[:context] = { :backtrace => exception.backtrace.map(&:to_s) }
      ev
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
sqreen-1.18.6-java lib/sqreen/events/remote_exception.rb
sqreen-1.18.6 lib/sqreen/events/remote_exception.rb
sqreen-1.18.5-java lib/sqreen/events/remote_exception.rb
sqreen-1.18.5 lib/sqreen/events/remote_exception.rb
sqreen-1.18.4-java lib/sqreen/events/remote_exception.rb
sqreen-1.18.4 lib/sqreen/events/remote_exception.rb
sqreen-1.18.3-java lib/sqreen/events/remote_exception.rb
sqreen-1.18.3 lib/sqreen/events/remote_exception.rb
sqreen-1.18.3.beta2 lib/sqreen/events/remote_exception.rb
sqreen-1.18.3.beta1 lib/sqreen/events/remote_exception.rb
sqreen-1.18.2-java lib/sqreen/events/remote_exception.rb
sqreen-1.18.2 lib/sqreen/events/remote_exception.rb