Class: Ddr::Models::File
- Inherits:
-
ActiveFedora::File
- Object
- ActiveFedora::File
- Ddr::Models::File
- Extended by:
- Deprecation
- Defined in:
- lib/ddr/models/file.rb
Direct Known Subclasses
Constant Summary collapse
- CONTENT =
"content".freeze
- EXTRACTED_TEXT =
"extractedText".freeze
- FITS =
"fits".freeze
- STRUCT_METADATA =
"structMetadata".freeze
- THUMBNAIL =
"thumbnail".freeze
- DEFAULT_FILE_EXTENSION =
"bin"- STRFTIME_FORMAT =
"%Y-%m-%dT%H:%M:%S.%LZ"
Class Method Summary collapse
Instance Method Summary collapse
- #content_digest(algorithm) ⇒ Object
- #create_date_string ⇒ Object
-
#default_file_extension ⇒ Object
Return default file extension for file based on MIME type.
-
#default_file_name ⇒ Object
Return default file name.
- #default_file_prefix ⇒ Object
- #dsCreateDate ⇒ Object
- #dsid ⇒ Object
- #tempfile(prefix: nil, suffix: nil) ⇒ Object
- #validate_checksum!(checksum_value, checksum_type = nil) ⇒ Object
Class Method Details
.const_missing(name) ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/ddr/models/file.rb', line 16 def self.const_missing(name) case name when :DESC_METADATA Deprecation.warn(self, "Ddr::File::DESC_METADATA is deprecated." \ " Use Ddr::Models::Metadata::DESC_METADATA instead.") Ddr::Models::Metadata::DESC_METADATA end end |
Instance Method Details
#content_digest(algorithm) ⇒ Object
58 59 60 |
# File 'lib/ddr/models/file.rb', line 58 def content_digest(algorithm) Ddr::Utils.digest(content, algorithm) end |
#create_date_string ⇒ Object
54 55 56 |
# File 'lib/ddr/models/file.rb', line 54 def create_date_string create_date.strftime(STRFTIME_FORMAT) if create_date end |
#default_file_extension ⇒ Object
Return default file extension for file based on MIME type
63 64 65 66 67 68 69 70 71 72 |
# File 'lib/ddr/models/file.rb', line 63 def default_file_extension mimetypes = MIME::Types[mime_type] return mimetypes.first.extensions.first unless mimetypes.empty? case mime_type when 'application/n-triples' 'txt' else DEFAULT_FILE_EXTENSION end end |
#default_file_name ⇒ Object
Return default file name
79 80 81 |
# File 'lib/ddr/models/file.rb', line 79 def default_file_name [ default_file_prefix, default_file_extension ].join(".") end |
#default_file_prefix ⇒ Object
74 75 76 |
# File 'lib/ddr/models/file.rb', line 74 def default_file_prefix (id && id.gsub(/\//, "_")) || "NEW" end |
#dsCreateDate ⇒ Object
32 33 34 35 |
# File 'lib/ddr/models/file.rb', line 32 def dsCreateDate Deprecation.warn(File, "`dsCreateDate` is no longer a file method. Use `create_date` instead.") create_date end |
#dsid ⇒ Object
25 26 27 28 29 30 |
# File 'lib/ddr/models/file.rb', line 25 def dsid Deprecation.warn(File, "`dsid` is no longer a file method. Use `::File.basename(id)`.") if id ::File.basename(id) end end |
#tempfile(prefix: nil, suffix: nil) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/ddr/models/file.rb', line 83 def tempfile(prefix: nil, suffix: nil) if empty? raise Error, "Refusing to create tempfile for empty file!" end prefix ||= default_file_prefix + "--" suffix ||= "." + default_file_extension Tempfile.open [prefix, suffix], encoding: Encoding::ASCII_8BIT do |f| f.write(content) f.close yield f end end |
#validate_checksum!(checksum_value, checksum_type = nil) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/ddr/models/file.rb', line 37 def validate_checksum!(checksum_value, checksum_type=nil) raise Error, "Checksum cannot be validated on new file." if new_record? raise Error, "Checksum cannot be validated on unpersisted content." if content_changed? raise ChecksumInvalid, "The repository internal checksum validation failed." unless check_fixity algorithm = checksum_type || checksum.algorithm calculated_checksum = if algorithm == checksum.algorithm checksum.value else content_digest(algorithm) end if checksum_value == calculated_checksum "The checksum #{algorithm}:#{checksum_value} is valid for file #{::File.basename(id)}." else raise ChecksumInvalid, "The checksum #{algorithm}:#{checksum_value} is not valid for file #{::File.basename(id)}." end end |