# frozen_string_literal: true # File helpers methods. # It needs the method filename to be defined. module Gitlab module FileTypeDetection IMAGE_EXT = %w[png jpg jpeg gif bmp tiff ico].freeze # We recommend using the .mp4 format over .mov. Videos in .mov format can # still be used but you really need to make sure they are served with the # proper MIME type video/mp4 and not video/quicktime or your videos won't play # on IE >= 9. # http://archive.sublimevideo.info/20150912/docs.sublimevideo.net/troubleshooting.html VIDEO_EXT = %w[mp4 m4v mov webm ogv].freeze # These extension types can contain dangerous code and should only be embedded inline with # proper filtering. They should always be tagged as "Content-Disposition: attachment", not "inline". DANGEROUS_EXT = %w[svg].freeze def image? extension_match?(IMAGE_EXT) end def video? extension_match?(VIDEO_EXT) end def image_or_video? image? || video? end def dangerous? extension_match?(DANGEROUS_EXT) end private def extension_match?(extensions) return false unless filename extension = File.extname(filename).delete('.') extensions.include?(extension.downcase) end end end