Class: Ddr::File
- Inherits:
-
Valkyrie::Resource
- Object
- Valkyrie::Resource
- Ddr::File
- Defined in:
- app/models/ddr/file.rb
Constant Summary collapse
- DEFAULT_FILE_EXTENSION =
'bin'
Instance Method Summary collapse
- #content ⇒ Object
-
#default_file_extension ⇒ Object
Return default file extension for file based on MIME type.
- #file ⇒ Object
- #file_created_at ⇒ Object
- #file_path ⇒ Object
- #file_size ⇒ Object
- #sha1 ⇒ Object
- #stored_checksums_valid? ⇒ Boolean
- #validate_checksum!(checksum_value, checksum_type) ⇒ Object
Instance Method Details
#content ⇒ Object
11 12 13 |
# File 'app/models/ddr/file.rb', line 11 def content file.read end |
#default_file_extension ⇒ Object
Return default file extension for file based on MIME type
36 37 38 39 40 41 42 43 44 45 |
# File 'app/models/ddr/file.rb', line 36 def default_file_extension mimetypes = MIME::Types[media_type] return mimetypes.first.preferred_extension unless mimetypes.empty? case media_type when 'application/n-triples' 'txt' else DEFAULT_FILE_EXTENSION end end |
#file ⇒ Object
15 16 17 |
# File 'app/models/ddr/file.rb', line 15 def file Ddr.storage_adapter.find_by(id: file_identifier) end |
#file_created_at ⇒ Object
19 20 21 |
# File 'app/models/ddr/file.rb', line 19 def file_created_at ::File::Stat.new(Ddr.storage_adapter.file_path(file_identifier)).ctime end |
#file_path ⇒ Object
23 24 25 |
# File 'app/models/ddr/file.rb', line 23 def file_path Ddr.storage_adapter.file_path(file_identifier) end |
#file_size ⇒ Object
27 28 29 |
# File 'app/models/ddr/file.rb', line 27 def file_size file.size end |
#sha1 ⇒ Object
31 32 33 |
# File 'app/models/ddr/file.rb', line 31 def sha1 digest.detect(&:sha1?)&.value end |
#stored_checksums_valid? ⇒ Boolean
47 48 49 50 |
# File 'app/models/ddr/file.rb', line 47 def stored_checksums_valid? checksums = digest.each_with_object({}) { |dgst, memo| memo[dgst.type] = dgst.value } file.valid? digests: checksums end |
#validate_checksum!(checksum_value, checksum_type) ⇒ Object
52 53 54 55 56 57 58 59 60 61 |
# File 'app/models/ddr/file.rb', line 52 def validate_checksum!(checksum_value, checksum_type) raise Ddr::Error, I18n.t('ddr.checksum.validation.must_be_stored') unless file_identifier.present? raise Ddr::ChecksumInvalid, I18n.t('ddr.checksum.validation.internal_check_failed') unless stored_checksums_valid? if file.valid? digests: { checksum_type => checksum_value } I18n.t('ddr.checksum.validation.valid', type: checksum_type, value: checksum_value) else raise Ddr::ChecksumInvalid, I18n.t('ddr.checksum.validation.invalid', type: checksum_type, value: checksum_value) end end |