lib/ddr/jobs/fits_file_characterization.rb in ddr-models-2.3.2 vs lib/ddr/jobs/fits_file_characterization.rb in ddr-models-2.4.0.rc1

- old
+ new

@@ -1,51 +1,13 @@ -require 'open3' - module Ddr::Jobs class FitsFileCharacterization + extend Job @queue = :file_characterization - EVENT_SUMMARY = 'FITS characterization of content file'.freeze - def self.perform(pid) obj = ActiveFedora::Base.find(pid) - tmp_filename = Ddr::Utils::sanitize_filename(obj.original_filename) || obj.content.default_file_name - Dir.mktmpdir(nil, Ddr::Models.tempdir) do |dir| - infile = create_temp_infile(dir, tmp_filename, obj.content.content) - fits_output, err, status = Open3.capture3(fits_command, '-i', infile) - if status.success? && fits_output.present? - obj.reload - obj.fits.content = fits_output - obj.save! - end - notify_event(pid, err, status) - end - end - - def self.fits_command - File.join(Ddr::Models.fits_home, 'fits.sh') - end - - def self.fits_version - `#{fits_command} -v`.strip - end - - private - - def self.create_temp_infile(dir, tmp_filename, content) - temp_infile = File.join(dir, tmp_filename) - File.open(temp_infile, 'wb') do |f| - f.write content - end - temp_infile - end - - def self.notify_event(pid, err, status) - details = status.success? ? nil : err - event_args = { pid: pid, summary: EVENT_SUMMARY, software: "fits #{fits_version}", detail: details } - event_args[:outcome] = status.success? ? Ddr::Events::Event::SUCCESS : Ddr::Events::Event::FAILURE - Ddr::Notifications.notify_event(:update, event_args) + Ddr::Models::FileCharacterization.call(obj) end end end