Class: BPL::Derivatives::PersistBasicContainedOutputFileService

Inherits:
PersistOutputFileService show all
Defined in:
lib/bpl/derivatives/services/persist_basic_contained_output_file_service.rb

Overview

This Service is an implementation of the Hydra::Derivatives::PeristOutputFileService It supports basic contained files, which is the behavior associated with Fedora 3 file datastreams that were migrated to Fedora 4 and, at the time that this class was authored, corresponds to the behavior of ActiveFedora::Base.attach_file and ActiveFedora::Base.attached_files Rename this

Class Method Summary collapse

Class Method Details

.call(object, directives) ⇒ Object

This method conforms to the signature of the .call method on Hydra::Derivatives::PeristOutputFileService

  • Persists the file within the object at destination_name

NOTE: Uses basic containment. If you want to use direct containment (ie. with PCDM) you must use a different service (ie. Hydra::Works::AddFileToGenericFile Service)

Parameters:

Options Hash (directives):

  • url (String)

    This can determine the path of the object.

  • format (String)

    The file extension (e.g. ‘jpg’)



16
17
18
19
20
21
22
23
# File 'lib/bpl/derivatives/services/persist_basic_contained_output_file_service.rb', line 16

def self.call(object, directives)
  file = io(object.content, directives)
  remote_file = retrieve_remote_file(directives)
  remote_file.content = file
  remote_file.mime_type = determine_mime_type(file)
  remote_file.original_name = determine_original_name(file)
  remote_file.save
end

.determine_mime_type(file) ⇒ Object

Parameters:

  • file (Hydra::Derivatives::IoDecorator)


35
36
37
38
39
40
41
# File 'lib/bpl/derivatives/services/persist_basic_contained_output_file_service.rb', line 35

def self.determine_mime_type(file)
  if file.respond_to? :mime_type
    file.mime_type
  else
    "appliction/octet-stream"
  end
end

.determine_original_name(file) ⇒ Object

Parameters:

  • file (Hydra::Derivatives::IoDecorator)


26
27
28
29
30
31
32
# File 'lib/bpl/derivatives/services/persist_basic_contained_output_file_service.rb', line 26

def self.determine_original_name(file)
  if file.respond_to? :original_filename
    file.original_filename
  else
    "derivative"
  end
end

.new_mime_type(extension, charset = nil) ⇒ Object



61
62
63
64
65
# File 'lib/bpl/derivatives/services/persist_basic_contained_output_file_service.rb', line 61

def self.new_mime_type(extension, charset = nil)
  fmt = mime_format(extension)
  fmt += "; charset=#{charset}" if charset
  fmt
end