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
- #build_export_metadata ⇒ Object
- #build_for_exporter ⇒ Object
-
#file_extension(file:, filename:) ⇒ String
Generate the appropriate file extension based on the mime type of the file.
-
#filename(file_set) ⇒ Object
Prepend the file_set id to ensure a unique filename and also one that is not longer than 255 characters.
- #hyrax_record ⇒ Object
Instance Method Details
#build_export_metadata ⇒ Object
19 20 21 |
# File 'app/models/concerns/bulkrax/export_behavior.rb', line 19 def raise StandardError, 'not implemented' end |
#build_for_exporter ⇒ Object
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
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_record ⇒ Object
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 |