Module: Bulkrax::ExportBehavior

Extended by:
ActiveSupport::Concern
Included in:
BagitParser, CsvParser, Entry
Defined in:
app/models/concerns/bulkrax/export_behavior.rb

Instance Method Summary collapse

Instance Method Details

#build_export_metadataObject

Raises:

  • (StandardError)


19
20
21
# File 'app/models/concerns/bulkrax/export_behavior.rb', line 19

def 
  raise StandardError, 'not implemented'
end

#build_for_exporterObject



9
10
11
12
13
14
15
16
17
# File 'app/models/concerns/bulkrax/export_behavior.rb', line 9

def build_for_exporter
  
rescue RSolr::Error::Http, CollectionsCreatedError => e
  raise e
rescue StandardError => e
  set_status_info(e)
else
  set_status_info
end

#file_extension(file:, filename:) ⇒ String

Generate the appropriate file extension based on the mime type of the file

Returns:

  • (String)

    the file extension for the given file



53
54
55
56
57
58
59
60
61
# File 'app/models/concerns/bulkrax/export_behavior.rb', line 53

def file_extension(file:, filename:)
  declared_mime = ::Marcel::MimeType.for(declared_type: file.mime_type)
  # validate the declared mime type
  declared_mime = ::Marcel::MimeType.for(name: filename) if declared_mime.nil? || declared_mime == "application/octet-stream"
  # convert the mime type to a file extension
  Mime::Type.lookup(declared_mime).symbol.to_s
rescue Mime::Type::InvalidMimeType
  nil
end

#filename(file_set) ⇒ Object

Prepend the file_set id to ensure a unique filename and also one that is not longer than 255 characters



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'app/models/concerns/bulkrax/export_behavior.rb', line 28

def filename(file_set)
  # return if there are no files on the fileset
  file = Bulkrax.object_factory.original_file(fileset: file_set)
  return '' if file.blank?

  fn = Bulkrax.object_factory.filename_for(fileset: file_set)
  ext = file_extension(file: file, filename: fn)

  # Prepend the file_set id to ensure a unique filename
  filename = File.basename(fn, ".*")
  # Skip modification if file already has ID or we're in metadata-only mode
  if fn.include?(file_set.id) || importerexporter.
    # keep filename as is
  else
    filename = "#{file_set.id}_#{filename}"
  end
  filename = ext.present? ? "#{filename}.#{ext}" : fn

  # Remove extension, truncate and reattach
  "#{File.basename(filename, ext)[0...(220 - ext.length)]}#{ext}"
end

#hyrax_recordObject



23
24
25
# File 'app/models/concerns/bulkrax/export_behavior.rb', line 23

def hyrax_record
  @hyrax_record ||= Bulkrax.object_factory.find(self.identifier)
end