class Hydra::Works::DetermineMimeType

Attributes

file[R]
original_name[R]

Public Class Methods

call(file, original_name = nil) click to toggle source

Determines the mime type for a given file @param [IO, File, Rack::Multipart::UploadedFile, read] file @param [String, NilClass] original_name of the file @return [String]

# File lib/hydra/works/services/determine_mime_type.rb, line 7
def self.call(file, original_name = nil)
  new(file, original_name).determine_mime_type
end
new(file, original_name) click to toggle source
# File lib/hydra/works/services/determine_mime_type.rb, line 13
def initialize(file, original_name)
  @file = file
  @original_name = original_name
end

Public Instance Methods

determine_mime_type() click to toggle source
# File lib/hydra/works/services/determine_mime_type.rb, line 18
def determine_mime_type
  return file.mime_type if mime_type?
  return file.content_type if content_type?
  mime_type_from_name_or_path || 'application/octet-stream'
end
mime_type_from_name_or_path() click to toggle source
# File lib/hydra/works/services/determine_mime_type.rb, line 24
def mime_type_from_name_or_path
  return Hydra::PCDM::GetMimeTypeForFile.call(original_name) if original_name.present?
  return Hydra::PCDM::GetMimeTypeForFile.call(file.path) if file.respond_to?(:path)
end

Private Instance Methods

content_type?() click to toggle source
# File lib/hydra/works/services/determine_mime_type.rb, line 35
def content_type?
  file.respond_to?(:content_type) && file.content_type.present?
end
mime_type?() click to toggle source
# File lib/hydra/works/services/determine_mime_type.rb, line 31
def mime_type?
  file.respond_to?(:mime_type) && file.mime_type.present?
end