module Immobilienscout::RequestErrorHandler

Constants

ERROR_COMMON_RESOURCE_NOT_FOUND
ERROR_RESOURCE_NOT_FOUND
ERROR_RESOURCE_VALIDATION

Public Class Methods

handle(parsed_response) click to toggle source
# File lib/immobilienscout/request_error_handler.rb, line 10
def handle(parsed_response)
  if parsed_response.messages.is_a?(Array)
    error_code = parsed_response.messages&.first&.code
    error_messages = parsed_response.messages.map(&:messages)
  else
    error_code = parsed_response.messages['messageCode']
    error_messages = Array.wrap(parsed_response.messages['message'])
  end

  error_class = error_class(error_code)
  raise error_class, error_messages
end

Private Class Methods

error_class(error_code) click to toggle source
# File lib/immobilienscout/request_error_handler.rb, line 25
def error_class(error_code)
  case error_code
  when ERROR_RESOURCE_NOT_FOUND
    Immobilienscout::Errors::ResourceNotFound
  when ERROR_COMMON_RESOURCE_NOT_FOUND
    Immobilienscout::Errors::CommonResourceNotFound
  when ERROR_RESOURCE_VALIDATION
    Immobilienscout::Errors::ResourceValidation
  else
    Immobilienscout::Errors::InvalidRequest
  end
end