Class: Hydra::Works::DetermineMimeType

Inherits:
Object
  • Object
show all
Defined in:
lib/hydra/works/services/determine_mime_type.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(file, original_name) ⇒ DetermineMimeType

Returns a new instance of DetermineMimeType.



13
14
15
16
# File 'lib/hydra/works/services/determine_mime_type.rb', line 13

def initialize(file, original_name)
  @file = file
  @original_name = original_name
end

Instance Attribute Details

#fileObject (readonly)

Returns the value of attribute file.



11
12
13
# File 'lib/hydra/works/services/determine_mime_type.rb', line 11

def file
  @file
end

#original_nameObject (readonly)

Returns the value of attribute original_name.



11
12
13
# File 'lib/hydra/works/services/determine_mime_type.rb', line 11

def original_name
  @original_name
end

Class Method Details

.call(file, original_name = nil) ⇒ String

Determines the mime type for a given file

Parameters:

  • file (IO, File, Rack::Multipart::UploadedFile, #read)
  • original_name (String, NilClass) (defaults to: nil)

    of the file

Returns:

  • (String)


7
8
9
# 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

Instance Method Details

#determine_mime_typeObject



18
19
20
21
22
# 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_pathObject



24
25
26
27
# 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