Fix error when passing unknown filter param in REST API (#20626)
Fix #19156
This commit is contained in:
parent
5c826c408d
commit
b31afc6294
|
@ -57,7 +57,7 @@ class Api::BaseController < ApplicationController
|
|||
render json: { error: I18n.t('errors.429') }, status: 429
|
||||
end
|
||||
|
||||
rescue_from ActionController::ParameterMissing do |e|
|
||||
rescue_from ActionController::ParameterMissing, Mastodon::InvalidParameterError do |e|
|
||||
render json: { error: e.to_s }, status: 400
|
||||
end
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ class AccountFilter
|
|||
when 'order'
|
||||
order_scope(value)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -68,7 +68,7 @@ class AccountFilter
|
|||
when 'remote'
|
||||
Account.remote
|
||||
else
|
||||
raise "Unknown origin: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown origin: #{value}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -84,8 +84,10 @@ class AccountFilter
|
|||
accounts_with_users.merge(User.disabled)
|
||||
when 'silenced'
|
||||
Account.silenced
|
||||
when 'sensitized'
|
||||
Account.sensitized
|
||||
else
|
||||
raise "Unknown status: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown status: #{value}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -96,7 +98,7 @@ class AccountFilter
|
|||
when 'recent'
|
||||
Account.recent
|
||||
else
|
||||
raise "Unknown order: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown order: #{value}"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ class Admin::ActionLogFilter
|
|||
account = Account.find_or_initialize_by(id: value)
|
||||
Admin::ActionLog.where(target: [account, account.user].compact)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -30,7 +30,7 @@ class Admin::AppealFilter
|
|||
when 'status'
|
||||
status_scope(value)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -43,7 +43,7 @@ class Admin::AppealFilter
|
|||
when 'pending'
|
||||
Appeal.pending
|
||||
else
|
||||
raise "Unknown status: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown status: #{value}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -32,7 +32,7 @@ class Admin::StatusFilter
|
|||
when 'media'
|
||||
Status.joins(:media_attachments).merge(@account.media_attachments.reorder(nil)).group(:id).reorder('statuses.id desc')
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -33,7 +33,7 @@ class AnnouncementFilter
|
|||
when 'unpublished'
|
||||
Announcement.unpublished
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -39,7 +39,7 @@ class CustomEmojiFilter
|
|||
when 'shortcode'
|
||||
CustomEmoji.search(value.strip)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -36,7 +36,7 @@ class InstanceFilter
|
|||
when 'availability'
|
||||
availability_scope(value)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -47,7 +47,7 @@ class InstanceFilter
|
|||
when 'unavailable'
|
||||
Instance.joins(:unavailable_domain)
|
||||
else
|
||||
raise "Unknown availability: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown availability: #{value}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -31,7 +31,7 @@ class InviteFilter
|
|||
when 'expired'
|
||||
Invite.expired
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -53,7 +53,7 @@ class RelationshipFilter
|
|||
when 'activity'
|
||||
activity_scope(value)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -68,7 +68,7 @@ class RelationshipFilter
|
|||
when 'invited'
|
||||
Account.joins(user: :invite).merge(Invite.where(user: account.user)).eager_load(:account_stat).reorder(nil)
|
||||
else
|
||||
raise "Unknown relationship: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown relationship: #{value}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -83,7 +83,7 @@ class RelationshipFilter
|
|||
when 'remote'
|
||||
Account.remote
|
||||
else
|
||||
raise "Unknown location: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown location: #{value}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -94,7 +94,7 @@ class RelationshipFilter
|
|||
when 'primary'
|
||||
Account.where(moved_to_account_id: nil)
|
||||
else
|
||||
raise "Unknown status: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown status: #{value}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -105,7 +105,7 @@ class RelationshipFilter
|
|||
when 'recent'
|
||||
params[:relationship] == 'invited' ? Account.recent : Follow.recent
|
||||
else
|
||||
raise "Unknown order: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown order: #{value}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -114,7 +114,7 @@ class RelationshipFilter
|
|||
when 'dormant'
|
||||
AccountStat.where(last_status_at: nil).or(AccountStat.where(AccountStat.arel_table[:last_status_at].lt(1.month.ago)))
|
||||
else
|
||||
raise "Unknown activity: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown activity: #{value}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -38,7 +38,7 @@ class ReportFilter
|
|||
when :target_origin
|
||||
target_origin_scope(value)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -49,7 +49,7 @@ class ReportFilter
|
|||
when :remote
|
||||
Report.where(target_account: Account.remote)
|
||||
else
|
||||
raise "Unknown value: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown value: #{value}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -40,7 +40,7 @@ class Trends::PreviewCardFilter
|
|||
when 'locale'
|
||||
PreviewCardTrend.where(language: value)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ class Trends::PreviewCardProviderFilter
|
|||
when 'status'
|
||||
status_scope(value)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -43,7 +43,7 @@ class Trends::PreviewCardProviderFilter
|
|||
when 'pending_review'
|
||||
PreviewCardProvider.pending_review
|
||||
else
|
||||
raise "Unknown status: #{value}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown status: #{value}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -40,7 +40,7 @@ class Trends::StatusFilter
|
|||
when 'locale'
|
||||
StatusTrend.where(language: value)
|
||||
else
|
||||
raise "Unknown filter: #{key}"
|
||||
raise Mastodon::InvalidParameterError, "Unknown filter: #{key}"
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ module Mastodon
|
|||
class RaceConditionError < Error; end
|
||||
class RateLimitExceededError < Error; end
|
||||
class SyntaxError < Error; end
|
||||
class InvalidParameterError < Error; end
|
||||
|
||||
class UnexpectedResponseError < Error
|
||||
attr_reader :response
|
||||
|
|
|
@ -50,10 +50,10 @@ RSpec.describe CustomEmojiFilter do
|
|||
context 'else' do
|
||||
let(:params) { { else: 'else' } }
|
||||
|
||||
it 'raises RuntimeError' do
|
||||
it 'raises Mastodon::InvalidParameterError' do
|
||||
expect do
|
||||
subject
|
||||
end.to raise_error(RuntimeError, /Unknown filter: else/)
|
||||
end.to raise_error(Mastodon::InvalidParameterError, /Unknown filter: else/)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Reference in New Issue