Class: IngestLocalFileJob

Inherits:
Object
  • Object
show all
Defined in:
app/jobs/ingest_local_file_job.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(generic_file_id, directory, filename, user_key) ⇒ IngestLocalFileJob

Returns a new instance of IngestLocalFileJob.



8
9
10
11
12
13
# File 'app/jobs/ingest_local_file_job.rb', line 8

def initialize(generic_file_id, directory, filename, user_key)
  self.generic_file_id = generic_file_id
  self.directory = directory
  self.filename = filename 
  self.user_key = user_key
end

Instance Attribute Details

#directoryObject

Returns the value of attribute directory.



6
7
8
# File 'app/jobs/ingest_local_file_job.rb', line 6

def directory
  @directory
end

#filenameObject

Returns the value of attribute filename.



6
7
8
# File 'app/jobs/ingest_local_file_job.rb', line 6

def filename
  @filename
end

#generic_file_idObject

Returns the value of attribute generic_file_id.



6
7
8
# File 'app/jobs/ingest_local_file_job.rb', line 6

def generic_file_id
  @generic_file_id
end

#user_keyObject

Returns the value of attribute user_key.



6
7
8
# File 'app/jobs/ingest_local_file_job.rb', line 6

def user_key
  @user_key
end

Instance Method Details

#queue_nameObject



2
3
4
# File 'app/jobs/ingest_local_file_job.rb', line 2

def queue_name
  :ingest
end

#runObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'app/jobs/ingest_local_file_job.rb', line 15

def run
  filedata = File.new( File.join(directory, filename) )
  generic_file = GenericFile.find(generic_file_id)
  user = User.find_by_user_key(user_key)
  raise "Unable to find user for #{user_key}" unless user
  
  # virus check
  virus_stat = Sufia::GenericFile::Actions.virus_check(filedata)
  raise "Virus checking did not pass for #{File.basename(filedata.path)} status = #{virus_stat}" unless virus_stat == 0
  
  generic_file.label = File.basename(filename)
  generic_file.add_file(File.open(File.join(directory, filename)), 'content', generic_file.label)
  generic_file.record_version_committer(user)
  generic_file.save!

  #Sufia.queue.push(UnzipJob.new(generic_file.pid)) if generic_file.content.mimeType == 'application/zip'
  Sufia.queue.push(ContentDepositEventJob.new(generic_file.pid, user_key))
  FileUtils.rm([File.join(directory, filename)])
end