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

Version Path
sufia-7.1.0 app/jobs/attach_files_to_work_job.rb
sufia-7.0.0 app/jobs/attach_files_to_work_job.rb
sufia-7.0.0.rc2 app/jobs/attach_files_to_work_job.rb
sufia-7.0.0.rc1 app/jobs/attach_files_to_work_job.rb
sufia-7.0.0.beta4 app/jobs/attach_files_to_work_job.rb
sufia-7.0.0.beta3 app/jobs/attach_files_to_work_job.rb
sufia-7.0.0.beta2 app/jobs/attach_files_to_work_job.rb
sufia-7.0.0.beta1 app/jobs/attach_files_to_work_job.rb