jam-cloud/app/controllers/api_controller.rb

38 lines
1.3 KiB
Ruby

class ApiController < ApplicationController
@@log = Logging.logger[ApiController]
# define common error handlers
rescue_from 'JamRuby::StateError' do |exception|
@exception = exception
render "errors/state_error.rabl", :status => 400
end
rescue_from 'JamRuby::JamArgumentError' do |exception|
@exception = exception
render "errors/jam_argument_error", :status => 400
end
rescue_from 'JamRuby::PermissionError' do |exception|
@exception = exception
render "errors/permission_error", :status => 403
end
rescue_from 'ActiveRecord::RecordNotFound' do |exception|
@@log.debug(exception)
render :json => { :errors => { :resource => ["record not found"] } }, :status => 404
end
rescue_from 'PG::Error' do |exception|
@@log.debug(exception)
if exception.to_s.include? "duplicate key value violates unique constraint"
render :json => { :errors => { :resource => ["resource already exists"] } }, :status => 409 # 409 = conflict
else
raise exception
end
end
protected
def auth_user(id)
if current_user.id != id
#respond_with "You do not have permissions to perform this action.", responder: ApiResponder, :status => 403
raise PermissionError, ValidationMessages::PERMISSION_VALIDATION_ERROR
end
end
end