Sha256: 3f3c286413729f2f5e1f2c87369d32bc090f0bd47c7c00f833310b5a8340e9d0
Contents?: true
Size: 1.1 KB
Versions: 2
Compression:
Stored size: 1.1 KB
Contents
module Paperclip class ContentTypeDetector EMPTY_TYPE = "inode/x-empty" SENSIBLE_DEFAULT = "application/octet-stream" def initialize(filename) @filename = filename end def detect if blank_name? SENSIBLE_DEFAULT elsif empty_file? EMPTY_TYPE elsif !match? type_from_file_command elsif !multiple? possible_types.first else best_type_match end.to_s end private def empty_file? File.exists?(@filename) && File.size(@filename) == 0 end def blank_name? @filename.nil? || @filename.empty? end def possible_types @possible_types ||= MIME::Types.type_for(@filename) end def match? possible_types.length > 0 end def multiple? possible_types.length > 1 end def best_type_match official_types = possible_types.reject {|type| type.content_type.match(/\/x-/) } (official_types.first || possible_types.first).content_type end def type_from_file_command FileCommandContentTypeDetector.new(@filename).detect end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
paperclip-3.5.0 | lib/paperclip/content_type_detector.rb |
paperclip-3.4.2 | lib/paperclip/content_type_detector.rb |