Method: CoreLibrary::ResponseHandler#validate_against_error_cases

Defined in:
lib/apimatic-core/response_handler.rb

#validate_against_error_cases(response, error_cases) ⇒ Object

Validates the response against the provided error cases hash, if matches, it raises the exception.

Parameters:

  • response (HttpResponse)

    The received response.

  • error_cases (Hash)

    The error cases hash.

Raises:

  • (ApiException)

    Raises the APIException when configured error code matches.



243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
# File 'lib/apimatic-core/response_handler.rb', line 243

def validate_against_error_cases(response, error_cases)
  actual_status_code = response.status_code.to_s

  # Handling error case when configured as explicit error code
  error_case = error_cases[actual_status_code]
  error_case&.raise_exception(response)

  # Handling error case when configured as explicit error codes range
  default_range_entry = error_cases&.filter do |error_code, _|
    error_code.match?("^#{actual_status_code[0]}XX$")
  end

  default_range_error_case = default_range_entry&.map { |_, error_case_instance| error_case_instance }

  default_range_error_case[0].raise_exception(response) unless
    default_range_error_case.nil? || default_range_error_case.empty?

  # Handling default error case if configured
  default_error_case = error_cases['default']
  default_error_case&.raise_exception(response)
end