+++ /dev/null
-# frozen_string_literal: true
-
-class Api::V1::SearchController < Api::BaseController
- include Authorization
-
- RESULTS_LIMIT = 20
-
- before_action -> { doorkeeper_authorize! :read, :'read:search' }
- before_action :require_user!
-
- respond_to :json
-
- def index
- @search = Search.new(search_results)
- render json: @search, serializer: REST::SearchSerializer
- end
-
- private
-
- def search_results
- SearchService.new.call(
- params[:q],
- 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
# frozen_string_literal: true
-class Api::V2::SearchController < Api::V1::SearchController
+class Api::V2::SearchController < Api::BaseController
+ include Authorization
+
+ RESULTS_LIMIT = 20
+
+ before_action -> { doorkeeper_authorize! :read, :'read:search' }
+ before_action :require_user!
+
+ respond_to :json
+
def index
@search = Search.new(search_results)
- render json: @search, serializer: REST::V2::SearchSerializer
+ render json: @search, serializer: REST::SearchSerializer
+ end
+
+ private
+
+ def search_results
+ SearchService.new.call(
+ params[:q],
+ 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
# frozen_string_literal: true
class REST::SearchSerializer < ActiveModel::Serializer
- attributes :hashtags
-
has_many :accounts, serializer: REST::AccountSerializer
has_many :statuses, serializer: REST::StatusSerializer
-
- def hashtags
- object.hashtags.map(&:name)
- end
+ has_many :hashtags, serializer: REST::TagSerializer
end
+++ /dev/null
-# frozen_string_literal: true
-
-class REST::V2::SearchSerializer < ActiveModel::Serializer
- has_many :accounts, serializer: REST::AccountSerializer
- has_many :statuses, serializer: REST::StatusSerializer
- has_many :hashtags, serializer: REST::TagSerializer
-end
end
end
- get '/search', to: 'search#index', as: :search
-
resources :media, only: [:create, :update]
resources :blocks, only: [:index]
resources :mutes, only: [:index]
+++ /dev/null
-# frozen_string_literal: true
-
-require 'rails_helper'
-
-RSpec.describe Api::V1::SearchController, type: :controller do
- render_views
-
- let(:user) { Fabricate(:user, account: Fabricate(:account, username: 'alice')) }
- let(:token) { Fabricate(:accessible_access_token, resource_owner_id: user.id, scopes: 'read:search') }
-
- before do
- allow(controller).to receive(:doorkeeper_token) { token }
- end
-
- describe 'GET #index' do
- it 'returns http success' do
- get :index, params: { q: 'test' }
-
- expect(response).to have_http_status(200)
- end
- end
-end