class ApiController < ApplicationController protect_from_forgery with: :null_session skip_before_action :verify_authenticity_token rescue_from ActiveRecord::RecordInvalid do |e| render json: { error: e.to_s }, status: 422 end rescue_from ActiveRecord::RecordNotFound do render json: { error: 'Record not found' }, status: 404 end rescue_from Goldfinger::Error do render json: { error: 'Remote account could not be resolved' }, status: 422 end rescue_from HTTP::Error 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 protected def current_resource_owner User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token end def current_user super || current_resource_owner end def render_empty render json: {}, status: 200 end def set_maps(statuses) status_ids = statuses.flat_map { |s| [s.id, s.reblog_of_id] }.compact.uniq @reblogs_map = Status.reblogs_map(status_ids, current_user.account) @favourites_map = Status.favourites_map(status_ids, current_user.account) end end