class Shrine::Plugins::TypePredicates::MimeDatabase
Constants
- SUPPORTED_TOOLS
Public Class Methods
new(tool)
click to toggle source
# File lib/shrine/plugins/type_predicates.rb, line 63 def initialize(tool) raise Error, "unknown type database #{tool.inspect}, supported databases are: #{SUPPORTED_TOOLS.join(",")}" unless SUPPORTED_TOOLS.include?(tool) @tool = tool end
Public Instance Methods
call(extension)
click to toggle source
# File lib/shrine/plugins/type_predicates.rb, line 69 def call(extension) send(:"lookup_with_#{@tool}", extension) end
Private Instance Methods
lookup_with_marcel(extension)
click to toggle source
# File lib/shrine/plugins/type_predicates.rb, line 96 def lookup_with_marcel(extension) require "marcel" type = Marcel::MimeType.for(extension: ".#{extension}") type unless type == "application/octet-stream" end
lookup_with_mime_types(extension)
click to toggle source
# File lib/shrine/plugins/type_predicates.rb, line 82 def lookup_with_mime_types(extension) require "mime/types" mime_type = MIME::Types.of(".#{extension}").first mime_type&.content_type end
lookup_with_mimemagic(extension)
click to toggle source
# File lib/shrine/plugins/type_predicates.rb, line 89 def lookup_with_mimemagic(extension) require "mimemagic" magic = MimeMagic.by_extension(".#{extension}") magic&.type end
lookup_with_mini_mime(extension)
click to toggle source
# File lib/shrine/plugins/type_predicates.rb, line 75 def lookup_with_mini_mime(extension) require "mini_mime" info = MiniMime.lookup_by_extension(extension) info&.content_type end
lookup_with_rack_mime(extension)
click to toggle source
# File lib/shrine/plugins/type_predicates.rb, line 103 def lookup_with_rack_mime(extension) require "rack/mime" Rack::Mime.mime_type(".#{extension}", nil) end