Sha256: 084a6486246181435b9a247b0c41a3210d12b2cee5e5d720c73b324554426bdc
Contents?: true
Size: 879 Bytes
Versions: 37
Compression:
Stored size: 879 Bytes
Contents
# frozen_string_literal: true require 'action_dispatch' class MiniDefender::Rules::MimeTypes < MiniDefender::Rule def initialize(types) unless types.is_a?(Array) && types.all?{ |t| t.is_a?(String) } raise ArgumentError, 'Expected an array of strings.' end @types = types @file = false end def self.signature 'mime' end def self.make(args) raise ArgumentError, 'Expected at least one MIME type.' unless args.length > 0 new(args.split(',').map(&:downcase).map(&:strip)) end def passes?(attribute, value, validator) @file = value.is_a?(ActionDispatch::Http::UploadedFile) @file && @types.include?(@file.content_type) end def message(attribute, value, validator) if @file "The file should be one of the following types #{@types.to_sentence}" else 'The field should be a file.' end end end
Version data entries
37 entries across 37 versions & 1 rubygems