Sha256: a3bca0abcee64cc073dc3548a29fe2b90e9358c76ca6a9863f282f47d16e6b7c

Contents?: true

Size: 973 Bytes

Versions: 41

Compression:

Stored size: 973 Bytes

Contents

# frozen_string_literal: true

require 'action_dispatch'

class MiniDefender::Rules::Size < MiniDefender::Rule
  def initialize(size)
    raise ArgumentError, 'Size must be an integer.' unless size.is_a?(Integer)

    @size = size
  end

  def self.signature
    'size'
  end

  def self.make(args)
    raise ArgumentError, 'Expected exactly one argument.' unless args.length == 1

    self.new(args[0].to_i)
  end

  def passes?(attribute, value, validator)
    case value
    when String, Array, Hash
      value.length == @size
    when ActionDispatch::Http::UploadedFile
      value.size == @size
    when Numeric
      value == @size
    else
      false
    end
  end

  def message(attribute, value, validator)
    case value
    when ActionDispatch::Http::UploadedFile
      "The file size must be equal to #{@size} bytes."
    when Numeric
      "The value must be equal to #{@size}."
    else
      "The value length must be equal to #{@size}."
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
mini_defender-0.6.8 lib/mini_defender/rules/size.rb
mini_defender-0.6.7 lib/mini_defender/rules/size.rb
mini_defender-0.6.5 lib/mini_defender/rules/size.rb
mini_defender-0.6.4 lib/mini_defender/rules/size.rb
mini_defender-0.6.3 lib/mini_defender/rules/size.rb
mini_defender-0.6.2 lib/mini_defender/rules/size.rb
mini_defender-0.6.1 lib/mini_defender/rules/size.rb
mini_defender-0.6.0 lib/mini_defender/rules/size.rb
mini_defender-0.5.8 lib/mini_defender/rules/size.rb
mini_defender-0.5.7 lib/mini_defender/rules/size.rb
mini_defender-0.5.6 lib/mini_defender/rules/size.rb
mini_defender-0.5.5 lib/mini_defender/rules/size.rb
mini_defender-0.5.4 lib/mini_defender/rules/size.rb
mini_defender-0.5.3 lib/mini_defender/rules/size.rb
mini_defender-0.5.2 lib/mini_defender/rules/size.rb
mini_defender-0.5.1 lib/mini_defender/rules/size.rb
mini_defender-0.5.0 lib/mini_defender/rules/size.rb
mini_defender-0.4.1 lib/mini_defender/rules/size.rb
mini_defender-0.4.0 lib/mini_defender/rules/size.rb
mini_defender-0.3.14 lib/mini_defender/rules/size.rb