# frozen_string_literal: true module Api class ActiveStorageBlobsProxyController < ApiBaseController include ActiveStorage::Streaming skip_before_action :authenticate_user! skip_authorization_check def show blob_uuid = ApplicationRecord.signed_id_verifier.verified(params[:signed_uuid]) return head :not_found unless blob_uuid blob = ActiveStorage::Blob.find_by!(uuid: blob_uuid) if request.headers['Range'].present? send_blob_byte_range_data blob, request.headers['Range'] else http_cache_forever public: true do response.headers['Accept-Ranges'] = 'bytes' response.headers['Content-Length'] = blob.byte_size.to_s send_blob_stream blob, disposition: params[:disposition] end end end end end