class InputSanitizer::V2::CleanQueryCollectionField

Public Instance Methods

call() click to toggle source
# File lib/input_sanitizer/v2/clean_query_collection_field.rb, line 2
def call
  validate_type
  validate_size

  result, errors = [], {}
  items.each_with_index do |value, idx|
    begin
      result << converter.call(value, options)
    rescue InputSanitizer::ValidationError => e
      errors[idx] = e
    end
  end

  if errors.any?
    raise InputSanitizer::CollectionError.new(errors)
  else
    result
  end
end

Private Instance Methods

items() click to toggle source
# File lib/input_sanitizer/v2/clean_query_collection_field.rb, line 23
def items
  @items ||= data.to_s.split(',')
end
validate_size() click to toggle source
# File lib/input_sanitizer/v2/clean_query_collection_field.rb, line 31
def validate_size
  if collection.respond_to?(:fetch)
    if collection[:minimum] && items.length < collection[:minimum]
      raise InputSanitizer::CollectionLengthError.new(items.length, collection[:minimum], collection[:maximum])
    elsif collection[:maximum] && items.length > collection[:maximum]
      raise InputSanitizer::CollectionLengthError.new(items.length, collection[:minimum], collection[:maximum])
    end
  end
end
validate_type() click to toggle source
# File lib/input_sanitizer/v2/clean_query_collection_field.rb, line 27
def validate_type
  InputSanitizer::V2::Types::StringCheck.new.call(data)
end