Class: PactBroker::Api::Resources::ErrorResponseBodyGenerator

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/pact_broker/api/resources/error_response_body_generator.rb

Class Method Summary collapse

Methods included from Logging

included, #log_error, #log_with_tag

Class Method Details

.call(error, error_reference, _env = {}) ⇒ Object

env not needed, just passing in in case PF ever needs it



10
11
12
# File 'lib/pact_broker/api/resources/error_response_body_generator.rb', line 10

def self.call error, error_reference, _env = {}
  response_body_hash(error, error_reference).to_json
end

.display_message(error, obfuscated_message) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/pact_broker/api/resources/error_response_body_generator.rb', line 14

def self.display_message(error, obfuscated_message)
  if PactBroker.configuration.show_backtrace_in_error_response?
    error.message || obfuscated_message
  else
    PactBroker::Errors.reportable_error?(error) ? obfuscated_message : error.message
  end
end

.obfuscated_error_message(error_reference) ⇒ Object



22
23
24
# File 'lib/pact_broker/api/resources/error_response_body_generator.rb', line 22

def self.obfuscated_error_message(error_reference)
  "An error has occurred. The details have been logged with the reference #{error_reference}"
end

.response_body_hash(error, error_reference) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/pact_broker/api/resources/error_response_body_generator.rb', line 26

def self.response_body_hash(error, error_reference)
  response_body = {
    error: {
      message: display_message(error, obfuscated_error_message(error_reference)),
      reference: error_reference
    }
  }
  if PactBroker.configuration.show_backtrace_in_error_response?
    response_body[:error][:backtrace] = error.backtrace
  end
  response_body
end