Sha256: 620c071281e4b8da1d8076bcbb7d3c83f4b299a96c23b021ad0220e70fa4e6fb
Contents?: true
Size: 1.44 KB
Versions: 8
Compression:
Stored size: 1.44 KB
Contents
# Converts UploadedFiles into FileSets and attaches them to works. class AttachFilesToWorkJob < ActiveJob::Base queue_as :ingest # @param [ActiveFedora::Base] the work class # @param [Array<UploadedFile>] an array of files to attach def perform(work, uploaded_files) uploaded_files.each do |uploaded_file| file_set = FileSet.new user = User.find_by_user_key(work.depositor) actor = CurationConcerns::Actors::FileSetActor.new(file_set, user) actor.create_metadata(work, visibility: work.visibility) attach_content(actor, uploaded_file.file) uploaded_file.update(file_set_uri: file_set.uri) end end private # @param [CurationConcerns::Actors::FileSetActor] actor # @param [UploadedFileUploader] file def attach_content(actor, file) case file.file when CarrierWave::SanitizedFile actor.create_content(file.file.to_file) when CarrierWave::Storage::Fog::File import_url(actor, file) else raise ArgumentError, "Unknown type of file #{file.class}" end end # @param [CurationConcerns::Actors::FileSetActor] actor # @param [UploadedFileUploader] file def import_url(actor, file) actor.file_set.update(import_url: file.url) log = CurationConcerns::Operation.create!(user: actor.user, operation_type: "Attach File") ImportUrlJob.perform_later(actor.file_set, log) end end
Version data entries
8 entries across 8 versions & 1 rubygems