Class: BestType::MimeTypeLookup

Inherits:
Object
  • Object
show all
Defined in:
lib/best_type/mime_type_lookup.rb

Constant Summary collapse

FALLBACK_MIME_TYPE_VALUE =
'application/octet-stream'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ MimeTypeLookup

Returns a new instance of MimeTypeLookup.



11
12
13
# File 'lib/best_type/mime_type_lookup.rb', line 11

def initialize(config)
  @config = config
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



7
8
9
# File 'lib/best_type/mime_type_lookup.rb', line 7

def config
  @config
end

Instance Method Details

#for_file_name(file_name_or_path) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/best_type/mime_type_lookup.rb', line 15

def for_file_name(file_name_or_path)
  # Normalize format of file_name_or_path
  file_name_or_path = file_name_or_path.downcase

  extension = File.extname(file_name_or_path)
  extension = extension[1..] unless extension.empty?

  # Check config overrides first
  unless extension.empty?
    mime_type = @config.extension_to_mime_type_overrides.fetch(extension, nil)
    return mime_type unless mime_type.nil?
  end

  # Fall back to regular lookup
  detected_mime_types = MIME::Types.of(file_name_or_path)
  detected_mime_types.empty? ? FALLBACK_MIME_TYPE_VALUE : detected_mime_types.first.content_type
end