class Validation::Rule::DiasporaIdList

Rule for validating the number of diaspora* IDs in a string. The evaluated string is split at “;”.

Attributes

params[R]

This rule can have a minimum or maximum param. @return [Hash] params

Public Class Methods

new(params={}) click to toggle source

Creates a new rule for a diaspora* ID list validation @param [Hash] params @option params [Integer] :minimum minimum allowed id count @option params [Integer] :maximum maximum allowed id count

# File lib/diaspora_federation/validators/rules/diaspora_id_list.rb, line 16
def initialize(params={})
  %i[minimum maximum].each do |param|
    if params.include?(param) && !params[param].is_a?(Integer)
      raise ArgumentError, "The :#{param} needs to be an Integer"
    end
  end

  @params = params
end

Public Instance Methods

error_key() click to toggle source

The error key for this rule @return [Symbol] error key

# File lib/diaspora_federation/validators/rules/diaspora_id_list.rb, line 28
def error_key
  :diaspora_id_list
end
valid_value?(value) click to toggle source
# File lib/diaspora_federation/validators/rules/diaspora_id_list.rb, line 32
def valid_value?(value)
  ids = value.split(";")
  return false if params.include?(:maximum) && ids.count > params[:maximum]
  return false if params.include?(:minimum) && ids.count < params[:minimum]

  ids.each do |id|
    return false if DiasporaId::DIASPORA_ID.match(id).nil?
  end
  true
end