Sha256: 925c69155610a009b5d49f2e50342d8fe5a0801cc093332770f2ca34e88b22be

Contents?: true

Size: 1.53 KB

Versions: 13

Compression:

Stored size: 1.53 KB

Contents

class IngestFileJob < ActiveJob::Base
  queue_as CurationConcerns.config.ingest_queue_name

  # @param [FileSet] file_set
  # @param [String] filepath the cached file within the CurationConcerns.config.working_path
  # @param [User] user
  # @option opts [String] mime_type
  # @option opts [String] filename
  # @option opts [String] relation, ex. :original_file
  def perform(file_set, filepath, user, opts = {})
    relation = opts.fetch(:relation, :original_file).to_sym

    # Wrap in an IO decorator to attach passed-in options
    local_file = Hydra::Derivatives::IoDecorator.new(File.open(filepath, "rb"))
    local_file.mime_type = opts.fetch(:mime_type, nil)
    local_file.original_name = opts.fetch(:filename, File.basename(filepath))

    # Tell AddFileToFileSet service to skip versioning because versions will be minted by
    # VersionCommitter when necessary during save_characterize_and_record_committer.
    Hydra::Works::AddFileToFileSet.call(file_set,
                                        local_file,
                                        relation,
                                        versioning: false)

    # Persist changes to the file_set
    file_set.save!

    repository_file = file_set.send(relation)

    # Do post file ingest actions
    CurationConcerns::VersioningService.create(repository_file, user)

    # TODO: this is a problem, the file may not be available at this path on another machine.
    # It may be local, or it may be in s3
    CharacterizeJob.perform_later(file_set, repository_file.id, filepath)
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
curation_concerns-1.7.6 app/jobs/ingest_file_job.rb
curation_concerns-1.7.5 app/jobs/ingest_file_job.rb
curation_concerns-1.7.4 app/jobs/ingest_file_job.rb
curation_concerns-1.7.3 app/jobs/ingest_file_job.rb
curation_concerns-1.7.2 app/jobs/ingest_file_job.rb
curation_concerns-2.0.0.rc1 app/jobs/ingest_file_job.rb
curation_concerns-1.7.1 app/jobs/ingest_file_job.rb
curation_concerns-1.7.0 app/jobs/ingest_file_job.rb
curation_concerns-1.7.0.beta1 app/jobs/ingest_file_job.rb
curation_concerns-1.6.3 app/jobs/ingest_file_job.rb
curation_concerns-1.6.2 app/jobs/ingest_file_job.rb
curation_concerns-1.6.1 app/jobs/ingest_file_job.rb
curation_concerns-1.6.0 app/jobs/ingest_file_job.rb