Sha256: 4c44beb811fa7eec73d06b822801f892724afcfc682fb0fbf1de9dc106308437

Contents?: true

Size: 1.21 KB

Versions: 3

Compression:

Stored size: 1.21 KB

Contents

class ErrorReporter
  def self.report_error(sender_name, error, facebook_connection: nil)
    raise error unless report_error?

    screenshot = include_screenshot?(facebook_connection) ? create_screenshot(facebook_connection) : nil

    Senders.by_name(sender_name).send_error(error, screenshot: screenshot)

    Storage.set(:last_error_reported_time, Time.now)
    raise error
  end

  private_class_method def self.include_screenshot?(facebook_connection)
    include_screenshot_config = Config.option(
      :errors,
      :include_screenshot,
      default: false,
      type: :boolean
    )

    include_screenshot_config && facebook_connection.present?
  end

  private_class_method def self.create_screenshot(facebook_connection)
    facebook_connection.driver.screenshot_as(:png)
  rescue StandardError
    nil
  end

  private_class_method def self.report_error?
    min_minutes_between_reports = Config.option(
      :errors,
      :min_minutes_between_reports,
      default: 0,
      type: :float
    )

    last_error_reported_time = Storage.get(:last_error_reported_time, default: Time.new(2000))

    next_report_time = last_error_reported_time + min_minutes_between_reports.minutes

    Time.now > next_report_time
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
fuck_facebook-0.5.4 src/error_reporter.rb
fuck_facebook-0.5.3 src/error_reporter.rb
fuck_facebook-0.5.2 src/error_reporter.rb