summaryrefslogtreecommitdiff
path: root/app/controllers/api/v3/api_controller.rb
blob: 1fd19a69b7c95c8ba00a096287e8b1d8a370b5c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# frozen_string_literal: true

class Api::V3::ApiController < ApplicationController
  respond_to :json
  skip_before_action :anger_old_api_clients

  rescue_from ActiveRecord::RecordNotFound do |_exception|
    render json: { error: t('booru.errors.record_not_found') }, status: :not_found
  end

  rescue_from Can4::AccessDenied do |_exception|
    render json: { error: t('booru.errors.access_denied', user: 'Dave') }, status: :unauthorized
  end

  rescue_from ActionController::ParameterMissing do |exception|
    render json: { error: "Required request parameter is missing: #{exception.param}" }, status: :bad_request
  end

  protected

  def setup_simple_pagination(default_per_page = 250, max_per_page = 250)
    @per_page = params[:per_page].present? ? params[:per_page].to_i : default_per_page
    @per_page = max_per_page if @per_page > max_per_page
    @per_page = 1 if @per_page < 1

    @page_num = params[:page].to_i
  end

  def oauth_maybe_authorize!(scope)
    doorkeeper_authorize!(scope) unless using_apikey?
  end

  def oauth_authenticated_user
    User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
  end
end