parent
cf2b708e6b
commit
18331fefa2
@ -1,32 +0,0 @@ |
||||
# 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 |
@ -1,8 +1,32 @@ |
||||
# 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 |
||||
|
@ -1,12 +1,7 @@ |
||||
# 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 |
||||
|
@ -1,7 +0,0 @@ |
||||
# 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 |
@ -1,22 +0,0 @@ |
||||
# 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 |
Loading…
Reference in new issue