Sha256: 6e2273676778ab72b6d4712481f6e1401e2f7b5649be6de84b59bb17b7f13b7a

Contents?: true

Size: 990 Bytes

Versions: 14

Compression:

Stored size: 990 Bytes

Contents

# frozen_string_literal: true

class FileContentTypeValidator < BaseValidator

  def validate_each(record, attribute, value)
    assert_valid_include_or_exclude!
    assign_attr_readers(record, attribute, value)
    valid?
  end

  private

  def assert_valid_include_or_exclude!
    return if options.key?(:include) || options.key?(:exclude)

    raise ArgumentError, 'Missing ":include" or ":exclude" attribute for comparison.'
  end

  def valid_attr?
    options.slice(:include, :exclude).each do |option, option_value|
      validate_check(option, option_value)
    end
  end

  # rubocop:disable Style/CaseEquality
  def valid_content_type?(option, option_value)
    check = Array(option_value).any? { |type| type === value.content_type }
    option == :exclude ? !check : check
  end
  # rubocop:enable Style/CaseEquality

  def validate_check(option, option_value)
    return if valid_content_type?(option, option_value)

    record.errors.add(attribute, *error_message)
  end

end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
lite-validators-1.8.0 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.7.2 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.7.1 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.7.0 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.6.0 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.5.0 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.4.0 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.3.2 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.3.1 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.3.0 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.2.0 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.1.2 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.1.1 lib/lite/validators/file_content_type_validator.rb
lite-validators-1.1.0 lib/lite/validators/file_content_type_validator.rb