vereto-api/app/controllers/concerns/exception_handler.rb
2018-02-16 15:02:03 +00:00

34 lines
No EOL
1.1 KiB
Ruby

# I made this file lel
module ExceptionHandler
extend ActiveSupport::Concern
# Define custom error subclasses - rescue catches `StandardErrors`
class AuthenticationError < StandardError; end
class MissingToken < StandardError; end
class InvalidToken < StandardError; end
included do
# Define custom handlers
rescue_from ActiveRecord::RecordInvalid, with: :four_twenty_two
rescue_from ExceptionHandler::AuthenticationError, with: :unauthorized_request
rescue_from ExceptionHandler::MissingToken, with: :four_twenty_two
rescue_from ExceptionHandler::InvalidToken, with: :four_twenty_two
rescue_from ActiveRecord::RecordNotFound do |e|
json_response({ message: e.message}, :not_found)
end
end
private
# JSON Resoinse with message; Status code 422 - unprocessable entity
def four_twenty_two(e)
json_response({ message: e.message}, :unprocessable_entity)
end
# JSON Response with message; Status code 401 - Unauthorized
def unauthorized_request(e)
json_response({ message: e.message }, :unauthorized)
end
end