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

Version Path
mini_defender-0.6.3 lib/mini_defender/rules/mime_types.rb
mini_defender-0.6.2 lib/mini_defender/rules/mime_types.rb
mini_defender-0.6.1 lib/mini_defender/rules/mime_types.rb
mini_defender-0.6.0 lib/mini_defender/rules/mime_types.rb
mini_defender-0.5.8 lib/mini_defender/rules/mime_types.rb
mini_defender-0.5.7 lib/mini_defender/rules/mime_types.rb
mini_defender-0.5.6 lib/mini_defender/rules/mime_types.rb
mini_defender-0.5.5 lib/mini_defender/rules/mime_types.rb
mini_defender-0.5.4 lib/mini_defender/rules/mime_types.rb
mini_defender-0.5.3 lib/mini_defender/rules/mime_types.rb
mini_defender-0.5.2 lib/mini_defender/rules/mime_types.rb
mini_defender-0.5.1 lib/mini_defender/rules/mime_types.rb
mini_defender-0.5.0 lib/mini_defender/rules/mime_types.rb
mini_defender-0.4.1 lib/mini_defender/rules/mime_types.rb
mini_defender-0.4.0 lib/mini_defender/rules/mime_types.rb
mini_defender-0.3.14 lib/mini_defender/rules/mime_types.rb
mini_defender-0.3.13 lib/mini_defender/rules/mime_types.rb
mini_defender-0.3.12 lib/mini_defender/rules/mime_types.rb
mini_defender-0.3.11 lib/mini_defender/rules/mime_types.rb
mini_defender-0.3.10 lib/mini_defender/rules/mime_types.rb