Class: Validation::Rule::DiasporaIdCount

Inherits:
Object
  • Object
show all
Defined in:
lib/diaspora_federation/validators/rules/diaspora_id_count.rb

Overview

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ DiasporaIdCount

Creates a new rule for a maximum diaspora* ID count validation

Parameters:

  • params (Hash)

Options Hash (params):

  • :maximum (Integer)

    maximum allowed id count



13
14
15
16
17
18
19
# File 'lib/diaspora_federation/validators/rules/diaspora_id_count.rb', line 13

def initialize(params)
  unless params.include?(:maximum) && params[:maximum].is_a?(Integer)
    raise ArgumentError, "A number has to be specified for :maximum"
  end

  @params = params
end

Instance Attribute Details

#paramsHash (readonly)

This rule must have a maximum param.

Returns:

  • (Hash)

    params



8
9
10
# File 'lib/diaspora_federation/validators/rules/diaspora_id_count.rb', line 8

def params
  @params
end

Instance Method Details

#error_keySymbol

The error key for this rule

Returns:

  • (Symbol)

    error key



23
24
25
# File 'lib/diaspora_federation/validators/rules/diaspora_id_count.rb', line 23

def error_key
  :diaspora_id_count
end

#valid_value?(value) ⇒ Boolean

Returns:



27
28
29
30
31
32
33
34
# File 'lib/diaspora_federation/validators/rules/diaspora_id_count.rb', line 27

def valid_value?(value)
  ids = value.split(";")
  return false unless ids.count <= params[:maximum]
  ids.each do |id|
    return false if DiasporaId::DIASPORA_ID.match(id).nil?
  end
  true
end