1234567891011121314151617181920212223242526272829303132333435 |
- # frozen_string_literal: true
- module Paperclip
- module MediaTypeSpoofDetectorExtensions
- def mapping_override_mismatch?
- !Array(mapped_content_type).include?(calculated_content_type) && !Array(mapped_content_type).include?(type_from_mime_magic)
- end
- def calculated_media_type_from_mime_magic
- @calculated_media_type_from_mime_magic ||= type_from_mime_magic.split('/').first
- end
- def calculated_type_mismatch?
- !media_types_from_name.include?(calculated_media_type) && !media_types_from_name.include?(calculated_media_type_from_mime_magic)
- end
- def type_from_mime_magic
- @type_from_mime_magic ||= begin
- begin
- File.open(@file.path) do |file|
- MimeMagic.by_magic(file)&.type || ''
- end
- rescue Errno::ENOENT
- ''
- end
- end
- end
- def type_from_file_command
- @type_from_file_command ||= FileCommandContentTypeDetector.new(@file.path).detect
- end
- end
- end
- Paperclip::MediaTypeSpoofDetector.prepend(Paperclip::MediaTypeSpoofDetectorExtensions)
|