Procházet zdrojové kódy

Ensure that boolean params in the API are parsed for truthiness (#6575)

Use Rails smart boolean cast to account for values such as "f",
"0", "false", etc. Previously, if a param was present in the request,
it would count as true.
master
Eugen Rochko před 6 roky
committed by GitHub
rodič
revize
fce8464077
V databázi nebyl nalezen žádný známý klíč pro tento podpis ID GPG klíče: 4AEE18F83AFDEB23
7 změnil soubory, kde provedl 13 přidání a 17 odebrání
  1. +4
    -0
      app/controllers/api/base_controller.rb
  2. +0
    -4
      app/controllers/api/v1/accounts/search_controller.rb
  3. +3
    -3
      app/controllers/api/v1/accounts/statuses_controller.rb
  4. +3
    -3
      app/controllers/api/v1/accounts_controller.rb
  5. +1
    -5
      app/controllers/api/v1/search_controller.rb
  6. +1
    -1
      app/controllers/api/v1/timelines/public_controller.rb
  7. +1
    -1
      app/controllers/api/v1/timelines/tag_controller.rb

+ 4
- 0
app/controllers/api/base_controller.rb Zobrazit soubor

@@ -51,6 +51,10 @@ class Api::BaseController < ApplicationController
[params[:limit].to_i.abs, default_limit * 2].min
end

def truthy_param?(key)
ActiveModel::Type::Boolean.new.cast(params[key])
end

def current_resource_owner
@current_user ||= User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token
end


+ 0
- 4
app/controllers/api/v1/accounts/search_controller.rb Zobrazit soubor

@@ -22,8 +22,4 @@ class Api::V1::Accounts::SearchController < Api::BaseController
following: truthy_param?(:following)
)
end

def truthy_param?(key)
params[key] == 'true'
end
end

+ 3
- 3
app/controllers/api/v1/accounts/statuses_controller.rb Zobrazit soubor

@@ -28,9 +28,9 @@ class Api::V1::Accounts::StatusesController < Api::BaseController

def account_statuses
default_statuses.tap do |statuses|
statuses.merge!(only_media_scope) if params[:only_media]
statuses.merge!(pinned_scope) if params[:pinned]
statuses.merge!(no_replies_scope) if params[:exclude_replies]
statuses.merge!(only_media_scope) if truthy_param?(:only_media)
statuses.merge!(pinned_scope) if truthy_param?(:pinned)
statuses.merge!(no_replies_scope) if truthy_param?(:exclude_replies)
end
end



+ 3
- 3
app/controllers/api/v1/accounts_controller.rb Zobrazit soubor

@@ -13,9 +13,9 @@ class Api::V1::AccountsController < Api::BaseController
end

def follow
FollowService.new.call(current_user.account, @account.acct, reblogs: params[:reblogs])
FollowService.new.call(current_user.account, @account.acct, reblogs: truthy_param?(:reblogs))

options = @account.locked? ? {} : { following_map: { @account.id => { reblogs: params[:reblogs] } }, requested_map: { @account.id => false } }
options = @account.locked? ? {} : { following_map: { @account.id => { reblogs: truthy_param?(:reblogs) } }, requested_map: { @account.id => false } }

render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships(options)
end
@@ -26,7 +26,7 @@ class Api::V1::AccountsController < Api::BaseController
end

def mute
MuteService.new.call(current_user.account, @account, notifications: params[:notifications])
MuteService.new.call(current_user.account, @account, notifications: truthy_param?(:notifications))
render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships
end



+ 1
- 5
app/controllers/api/v1/search_controller.rb Zobrazit soubor

@@ -33,12 +33,8 @@ class Api::V1::SearchController < Api::BaseController
SearchService.new.call(
params[:q],
RESULTS_LIMIT,
resolving_search?,
truthy_param?(:resolve),
current_account
)
end

def resolving_search?
params[:resolve] == 'true'
end
end

+ 1
- 1
app/controllers/api/v1/timelines/public_controller.rb Zobrazit soubor

@@ -29,7 +29,7 @@ class Api::V1::Timelines::PublicController < Api::BaseController
end

def public_timeline_statuses
Status.as_public_timeline(current_account, params[:local])
Status.as_public_timeline(current_account, truthy_param?(:local))
end

def insert_pagination_headers


+ 1
- 1
app/controllers/api/v1/timelines/tag_controller.rb Zobrazit soubor

@@ -38,7 +38,7 @@ class Api::V1::Timelines::TagController < Api::BaseController
end

def tag_timeline_statuses
Status.as_tag_timeline(@tag, current_account, params[:local])
Status.as_tag_timeline(@tag, current_account, truthy_param?(:local))
end

def insert_pagination_headers


Načítá se…
Zrušit
Uložit