Module: Hydra::Derivatives::ShellBasedProcessor

Extended by:
ActiveSupport::Concern
Included in:
Document, Jpeg2kImage
Defined in:
lib/hydra/derivatives/shell_based_processor.rb

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#encode_datastream(dest_dsid, file_suffix, mime_type, options = '') ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/hydra/derivatives/shell_based_processor.rb', line 29

def encode_datastream(dest_dsid, file_suffix, mime_type, options = '')
  out_file = nil
  output_file = Dir::Tmpname.create(['sufia', ".#{file_suffix}"], Hydra::Derivatives.temp_file_base){}
  source_datastream.to_tempfile do |f|
    self.class.encode(f.path, options, output_file)
  end
  out_file = File.open(output_file, "rb")
  object.add_file_datastream(out_file.read, :dsid=>dest_dsid, :mimeType=>mime_type)
  File.unlink(output_file)
end

#options_for(format) ⇒ Object

override this method in subclass if you want to provide specific options.



26
27
# File 'lib/hydra/derivatives/shell_based_processor.rb', line 26

def options_for(format)
end

#processObject



15
16
17
18
19
20
21
22
23
# File 'lib/hydra/derivatives/shell_based_processor.rb', line 15

def process
  directives.each do |name, args|
    format = args[:format]
    raise ArgumentError, "You must provide the :format you want to transcode into. You provided #{args}" unless format
    # TODO if the source is in the correct format, we could just copy it and skip transcoding.
    output_datastream_name = args[:datastream] || output_datastream_id(name)
    encode_datastream(output_datastream_name, format, new_mime_type(format), options_for(format))
  end
end