2022-03-06 18:25:15 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module ActiveStorage
|
|
|
|
# Modifica la creación de un blob antes de subir el archivo para que
|
|
|
|
# incluya el JekyllService adecuado.
|
|
|
|
module DirectUploadsControllerDecorator
|
|
|
|
extend ActiveSupport::Concern
|
|
|
|
|
|
|
|
included do
|
|
|
|
def create
|
|
|
|
blob = ActiveStorage::Blob.create_before_direct_upload!(service_name: session[:service_name], **blob_args)
|
|
|
|
render json: direct_upload_json(blob)
|
|
|
|
end
|
2022-04-04 17:27:00 +00:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
# Normalizar los caracteres unicode en los nombres de archivos
|
|
|
|
# para que puedan propagarse correctamente a través de todo el
|
|
|
|
# stack.
|
|
|
|
def blob_args
|
|
|
|
params.require(:blob).permit(:filename, :byte_size, :checksum, :content_type, metadata: {}).to_h.symbolize_keys.tap do |ba|
|
2022-04-28 13:34:57 +00:00
|
|
|
ba[:filename] = ba[:filename].unicode_normalize
|
2022-04-04 17:27:00 +00:00
|
|
|
end
|
|
|
|
end
|
2022-03-06 18:25:15 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
ActiveStorage::DirectUploadsController.include ActiveStorage::DirectUploadsControllerDecorator
|