Sha256: 04dd6beb5459a6ce075959aaa9e9224dbc1f6c00c566735f81937ea667b47c56

Contents?: true

Size: 1.26 KB

Versions: 9

Compression:

Stored size: 1.26 KB

Contents

class PeakFlowUtils::NotifierErrorParser
  attr_reader :backtrace, :environment, :error, :file_path, :line_number

  def initialize(backtrace:, environment:, error:)
    @backtrace = backtrace
    @environment = environment || {}
    @error = error

    detect_file_path_and_line_number
  end

  def detect_file_path_and_line_number
    backtrace.each do |trace|
      match = trace.match(/^((.+)\.([A-z]{2,4})):(\d+)(:|$)/)
      next unless match

      file_path = match[1]
      line_number = match[4].to_i

      next if file_path.include?("/.rvm/")

      @file_path ||= file_path
      @line_number ||= line_number

      break
    end
  end

  def cleaned_environment
    environment.reject do |key, _value|
      key.start_with?("action_controller.", "action_dispatch.", "puma.", "rack.") || key == "warden"
    end
  end

  def remote_ip
    environment["HTTP_X_FORWARDED_FOR"] || environment["REMOTE_ADDR"]
  end

  def url
    return unless environment["REQUEST_URI"]

    url = "http"
    url << "s" if environment["SERVER_PORT"] == 443 || environment["rack.url_scheme"] == "https" || environment["HTTPS"] == "on"
    url << "://"
    url << environment["HTTP_HOST"]
    url << environment["REQUEST_URI"]
    url
  end

  def user_agent
    environment["HTTP_USER_AGENT"]
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
peak_flow_utils-0.1.19 lib/peak_flow_utils/notifier_error_parser.rb
peak_flow_utils-0.1.18 lib/peak_flow_utils/notifier_error_parser.rb
peak_flow_utils-0.1.17 lib/peak_flow_utils/notifier_error_parser.rb
peak_flow_utils-0.1.16 lib/peak_flow_utils/notifier_error_parser.rb
peak_flow_utils-0.1.15 lib/peak_flow_utils/notifier_error_parser.rb
peak_flow_utils-0.1.14 lib/peak_flow_utils/notifier_error_parser.rb
peak_flow_utils-0.1.13 lib/peak_flow_utils/notifier_error_parser.rb
peak_flow_utils-0.1.12 lib/peak_flow_utils/notifier_error_parser.rb
peak_flow_utils-0.1.11 lib/peak_flow_utils/notifier_error_parser.rb