Add type, limit, offset, min_id, max_id, account_id to search API (#10091)
* Add type, limit, offset, min_id, max_id, account_id to search API Fix #8939 * Make the offset work on accounts and hashtags search as well * Assure brakeman we are not doing mass assignment here * Do not allow paginating unless a type is chosen * Fix search query and index id field on statuses instead of created_at
This commit is contained in:
		@@ -3,7 +3,7 @@
 | 
			
		||||
class Api::V1::SearchController < Api::BaseController
 | 
			
		||||
  include Authorization
 | 
			
		||||
 | 
			
		||||
  RESULTS_LIMIT = 5
 | 
			
		||||
  RESULTS_LIMIT = 20
 | 
			
		||||
 | 
			
		||||
  before_action -> { doorkeeper_authorize! :read, :'read:search' }
 | 
			
		||||
  before_action :require_user!
 | 
			
		||||
@@ -11,30 +11,22 @@ class Api::V1::SearchController < Api::BaseController
 | 
			
		||||
  respond_to :json
 | 
			
		||||
 | 
			
		||||
  def index
 | 
			
		||||
    @search = Search.new(search)
 | 
			
		||||
    @search = Search.new(search_results)
 | 
			
		||||
    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
 | 
			
		||||
      current_account,
 | 
			
		||||
      limit_param(RESULTS_LIMIT),
 | 
			
		||||
      search_params.merge(resolve: truthy_param?(:resolve))
 | 
			
		||||
    )
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def search_params
 | 
			
		||||
    params.permit(:type, :offset, :min_id, :max_id, :account_id)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user