53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Ruby
		
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| module Api::ErrorHandling
 | |
|   extend ActiveSupport::Concern
 | |
| 
 | |
|   included do
 | |
|     rescue_from ActiveRecord::RecordInvalid, Mastodon::ValidationError do |e|
 | |
|       render json: { error: e.to_s }, status: 422
 | |
|     end
 | |
| 
 | |
|     rescue_from ActiveRecord::RecordNotUnique do
 | |
|       render json: { error: 'Duplicate record' }, status: 422
 | |
|     end
 | |
| 
 | |
|     rescue_from Date::Error do
 | |
|       render json: { error: 'Invalid date supplied' }, status: 422
 | |
|     end
 | |
| 
 | |
|     rescue_from ActiveRecord::RecordNotFound do
 | |
|       render json: { error: 'Record not found' }, status: 404
 | |
|     end
 | |
| 
 | |
|     rescue_from HTTP::Error, Mastodon::UnexpectedResponseError do
 | |
|       render json: { error: 'Remote data could not be fetched' }, status: 503
 | |
|     end
 | |
| 
 | |
|     rescue_from OpenSSL::SSL::SSLError do
 | |
|       render json: { error: 'Remote SSL certificate could not be verified' }, status: 503
 | |
|     end
 | |
| 
 | |
|     rescue_from Mastodon::NotPermittedError do
 | |
|       render json: { error: 'This action is not allowed' }, status: 403
 | |
|     end
 | |
| 
 | |
|     rescue_from Seahorse::Client::NetworkingError do |e|
 | |
|       Rails.logger.warn "Storage server error: #{e}"
 | |
|       render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503
 | |
|     end
 | |
| 
 | |
|     rescue_from Mastodon::RaceConditionError, Stoplight::Error::RedLight do
 | |
|       render json: { error: 'There was a temporary problem serving your request, please try again' }, status: 503
 | |
|     end
 | |
| 
 | |
|     rescue_from Mastodon::RateLimitExceededError do
 | |
|       render json: { error: I18n.t('errors.429') }, status: 429
 | |
|     end
 | |
| 
 | |
|     rescue_from ActionController::ParameterMissing, Mastodon::InvalidParameterError do |e|
 | |
|       render json: { error: e.to_s }, status: 400
 | |
|     end
 | |
|   end
 | |
| end
 |