| 123456789101112131415161718192021222324252627282930313233343536373839 |
- # frozen_string_literal: true
- require './lib/api_error/base_error'
- class API::ApplicationController < ApplicationController
- protect_from_forgery with: :null_session
- before_action :set_default_response_format
- rescue_from StandardError, with: :handle_unhandled_api_error
- def not_found
- error = APIError::BaseError.new('The requested resource was not found')
- render_error(error, :not_found)
- end
- private
- def handle_unhandled_api_error(err)
- msg = "Unhandled API Error: #{err}\n#{err.backtrace.join("\n")}"
- Rails.logger.error(msg)
- error = APIError::BaseError.new(
- 'An unhandled exception occurred.',
- internal_error: err,
- )
- render_error(error)
- end
- def render_error(error, status = :internal_server_error)
- render json: {
- errors: [{message: error.message, type: error.type}],
- }, status: status
- end
- def set_default_response_format
- request.format = :json
- end
- end
|