Fix /api/v1/instance/domain_blocks being unconditionally cached (#24662)

pull/24665/head
Claire 2023-04-26 11:42:47 +02:00 committed by GitHub
parent 62ab7506d6
commit b0bf6216e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 4 deletions

View File

@ -6,10 +6,15 @@ class Api::V1::Instances::DomainBlocksController < Api::BaseController
before_action :require_enabled_api!
before_action :set_domain_blocks
vary_by ''
vary_by '', if: -> { Setting.show_domain_blocks == 'all' }
def index
cache_even_if_authenticated!
if Setting.show_domain_blocks == 'all'
cache_even_if_authenticated!
else
cache_if_unauthenticated!
end
render json: @domain_blocks, each_serializer: REST::DomainBlockSerializer, with_comment: (Setting.show_domain_blocks_rationale == 'all' || (Setting.show_domain_blocks_rationale == 'users' && user_signed_in?))
end

View File

@ -156,8 +156,8 @@ module CacheConcern
end
class_methods do
def vary_by(value)
before_action do |controller|
def vary_by(value, **kwargs)
before_action(**kwargs) do |controller|
response.headers['Vary'] = value.respond_to?(:call) ? controller.instance_exec(&value) : value
end
end