Sha256: f6054105680733be6f3e3ef5986208670bf1a0f634c5f1fd1dbc3e242b3253dc

Contents?: true

Size: 1.08 KB

Versions: 11

Compression:

Stored size: 1.08 KB

Contents

require 'webmachine/convert_request_to_rack_env'
require 'pact_broker/configuration'

module PactBroker
  module Api
    module Resources
      class ErrorHandler

        include PactBroker::Logging

        def self.call e, request, response
          logger.error e
          logger.error e.backtrace
          response_body = { error: { :message => e.message } }
          if PactBroker.configuration.show_backtrace_in_error_response?
            response_body[:error][:backtrace] = e.backtrace
          end
          response.body = response_body.to_json
          report(e, request) if reportable?(e)
        end

        def self.reportable? e
          !e.is_a?(PactBroker::Error)
        end

        def self.report e, request
          PactBroker.configuration.api_error_reporters.each do | error_notifier |
            begin
              error_notifier.call(e, env: Webmachine::ConvertRequestToRackEnv.call(request))
            rescue StandardError => e
              log_error(e, "Error executing api_error_reporter")
            end
          end
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
pact_broker-2.27.2 lib/pact_broker/api/resources/error_handler.rb
pact_broker-2.27.0 lib/pact_broker/api/resources/error_handler.rb
pact_broker-2.26.1 lib/pact_broker/api/resources/error_handler.rb
pact_broker-2.26.0 lib/pact_broker/api/resources/error_handler.rb
pact_broker-2.25.0 lib/pact_broker/api/resources/error_handler.rb
pact_broker-2.24.0 lib/pact_broker/api/resources/error_handler.rb
pact_broker-2.23.4 lib/pact_broker/api/resources/error_handler.rb
pact_broker-2.23.3 lib/pact_broker/api/resources/error_handler.rb
pact_broker-2.23.2 lib/pact_broker/api/resources/error_handler.rb
pact_broker-2.23.1 lib/pact_broker/api/resources/error_handler.rb
pact_broker-2.23.0 lib/pact_broker/api/resources/error_handler.rb