search_controller.rb (752B)
- # frozen_string_literal: true
- class Api::V1::SearchController < Api::BaseController
- include Authorization
- RESULTS_LIMIT = 5
- before_action -> { doorkeeper_authorize! :read }
- before_action :require_user!
- respond_to :json
- def index
- @search = Search.new(search)
- render json: @search, serializer: REST::SearchSerializer
- end
- private
- def search
- search_results.tap do |search|
- search[:statuses].keep_if do |status|
- begin
- authorize status, :show?
- rescue Mastodon::NotPermittedError
- false
- end
- end
- end
- end
- def search_results
- SearchService.new.call(
- params[:q],
- RESULTS_LIMIT,
- truthy_param?(:resolve),
- current_account
- )
- end
- end