Repository URL to install this package:
|
Version:
0.1.7 ▾
|
# frozen_string_literal: true
module Kiwi
module Errors
# Error Renderer
module Handler
def api_errors(exception)
if exception.is_a? Kiwi::Errors::ApiError
api_error(exception)
elsif exception.is_a? Kiwi::Errors::RecordInvalid
record_invalid(exception)
else
normal_error(exception)
end
end
def api_error(exception)
status = exception.status || 500
code = exception.code || '9999'
render_error(
status, code, exception.class.name,
exception.message
)
end
def normal_error(exception)
status = 500
code = exception
render_error(
status, code, exception.class.name,
exception.message
)
end
def record_invalid(exception) # rubocop:disable Metrics/MethodLength
formatted_errors = []
used_fields = []
record = exception.record
record.errors.each do |error, value|
next if used_fields.include? error.to_s
formatted_error = {
field: error.to_s,
detail: value[0]
}
formatted_errors.push formatted_error
used_fields.push error.to_s
end
formatted_errors = formatted_errors.sort_by { |k| k[:field] }
render_error(422,
'unprocessable_entity',
'Unprocessable Entity',
formatted_errors)
end
end
end
end