Sha256: c9fb933be581dae7e89805da0d73d3f7ba297e0018c88b4eccfd534bcd0a992b

Contents?: true

Size: 1.48 KB

Versions: 5

Compression:

Stored size: 1.48 KB

Contents

require 'action_dispatch'

module ExceptionNotifier
  class WebhookNotifier

    def initialize(options)
      @default_options = options
    end

    def call(exception, options={})
      env = options[:env]

      options = options.reverse_merge(@default_options)
      url = options.delete(:url)
      http_method = options.delete(:http_method) || :post

      options[:body] ||= {}
      options[:body][:server] = Socket.gethostname
      options[:body][:process] = $$
      if defined?(Rails) && Rails.respond_to?(:root)
        options[:body][:rails_root] = Rails.root
      end
      options[:body][:exception] = {:error_class => exception.class.to_s,
                                    :message => exception.message.inspect,
                                    :backtrace => exception.backtrace}
      options[:body][:data] = (env['exception_notifier.exception_data'] || {}).merge(options[:data] || {})

      unless env.nil?
        request = ActionDispatch::Request.new(env)

        request_items = {:url => request.original_url,
                         :http_method => request.method,
                         :ip_address => request.remote_ip,
                         :parameters => request.filtered_parameters,
                         :timestamp => Time.current }

        options[:body][:request] = request_items
        options[:body][:session] = request.session
        options[:body][:environment] = request.filtered_env
      end

      HTTParty.send(http_method, url, options)
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
exception_notification-4.1.2 lib/exception_notifier/webhook_notifier.rb
exception_notification-4.1.1 lib/exception_notifier/webhook_notifier.rb
exception_notification-4.1.0 lib/exception_notifier/webhook_notifier.rb
exception_notification-4.1.0.rc2 lib/exception_notifier/webhook_notifier.rb
exception_notification-4.1.0.rc1 lib/exception_notifier/webhook_notifier.rb