class Ddr::Models::File

Constants

CONTENT
DEFAULT_FILE_EXTENSION
EXTRACTED_TEXT
FITS
STRFTIME_FORMAT
STRUCT_METADATA
THUMBNAIL

Public Class Methods

const_missing(name) click to toggle source
# 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

Public Instance Methods

content_digest(algorithm) click to toggle source
# File lib/ddr/models/file.rb, line 58
def content_digest(algorithm)
  Ddr::Utils.digest(content, algorithm)
end
create_date_string() click to toggle source
# File lib/ddr/models/file.rb, line 54
def create_date_string
  create_date.strftime(STRFTIME_FORMAT) if create_date
end
default_file_extension() click to toggle source

Return default file extension for file based on MIME type

# 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() click to toggle source

Return default file name

# File lib/ddr/models/file.rb, line 79
def default_file_name
  [ default_file_prefix, default_file_extension ].join(".")
end
default_file_prefix() click to toggle source
# File lib/ddr/models/file.rb, line 74
def default_file_prefix
  (id && id.gsub(/\//, "_")) || "NEW"
end
dsCreateDate() click to toggle source
# 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() click to toggle source
# 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) { |f| ... } click to toggle source
# 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) click to toggle source
# 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