class Shrine::Plugins::InferExtension::ExtensionInferrer

Constants

SUPPORTED_TOOLS

Public Class Methods

new(tool) click to toggle source
# File lib/shrine/plugins/infer_extension.rb, line 75
def initialize(tool)
  raise Error, "unknown extension inferrer #{tool.inspect}, supported inferrers are: #{SUPPORTED_TOOLS.join(",")}" unless SUPPORTED_TOOLS.include?(tool)

  @tool = tool
end

Public Instance Methods

call(mime_type) click to toggle source
# File lib/shrine/plugins/infer_extension.rb, line 81
def call(mime_type)
  return nil if mime_type.nil?

  extension = send(:"infer_with_#{@tool}", mime_type)
  extension = ".#{extension}" unless extension.nil? || extension.start_with?(".")
  extension
end

Private Instance Methods

infer_with_mime_types(mime_type) click to toggle source
# File lib/shrine/plugins/infer_extension.rb, line 91
def infer_with_mime_types(mime_type)
  require "mime/types"

  mime_type = MIME::Types[mime_type].first
  mime_type.preferred_extension if mime_type
end
infer_with_mini_mime(mime_type) click to toggle source
# File lib/shrine/plugins/infer_extension.rb, line 98
def infer_with_mini_mime(mime_type)
  require "mini_mime"

  info = MiniMime.lookup_by_content_type(mime_type)
  info.extension if info
end