Class: IngestFileJob

Inherits:
ActiveJob::Base
  • Object
show all
Defined in:
app/jobs/ingest_file_job.rb

Instance Method Summary collapse

Instance Method Details

#perform(file_set, filename, mime_type, user_key, relation = 'original_file') ⇒ Object

Parameters:

  • file_set (FileSet)
  • filename (String)
  • mime_type (String, NilClass)
  • user_key (String)
  • relation (String) (defaults to: 'original_file')

    (‘original_file’)



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'app/jobs/ingest_file_job.rb', line 9

def perform(file_set, filename, mime_type, user_key, relation = 'original_file')
  file = File.open(filename, "rb")
  # If mime-type is known, wrap in an IO decorator
  # Otherwise allow Hydra::Works service to determine mime_type
  if mime_type
    file = Hydra::Derivatives::IoDecorator.new(file)
    file.mime_type = mime_type
    file.original_name = File.basename(filename)
  end

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

  # Persist changes to the file_set
  file_set.save!

  # Do post file ingest actions
  user = User.find_by_user_key(user_key)
  CurationConcerns::VersioningService.create(file_set.send(relation.to_sym), user)
  CurationConcerns.config.callback.run(:after_create_content, file_set, user)
end