class Rack::Validator

Attributes

invalid_params[R]
lazy_mode[RW]
messages[R]
missing_params[R]
params[R]

Public Class Methods

new(params, lazy_mode = true) click to toggle source
# File lib/rack/validator/sinatra.rb, line 12
def initialize(params, lazy_mode = true)
  @params = params
  @invalid_params = []
  @missing_params = []
  @messages = []
  @lazy_mode = lazy_mode
end

Public Instance Methods

clean_parameters(all_parameters) click to toggle source
# File lib/rack/validator/sinatra.rb, line 161
def clean_parameters(all_parameters)
  @params.each_key do |key|
    @params.delete key.to_s unless all_parameters.include? key.to_s
  end
end
downcase(key) click to toggle source
# File lib/rack/validator/sinatra.rb, line 28
def downcase(key)
  @params[key.to_s] = @params[key.to_s].to_s.downcase if @params[key.to_s]
end
has_errors?() click to toggle source
# File lib/rack/validator/sinatra.rb, line 20
def has_errors?
  @invalid_params.length > 0 or @missing_params.length > 0
end
is_boolean(key) click to toggle source
# File lib/rack/validator/sinatra.rb, line 141
def is_boolean(key)
  if lazy_check_disabled
    key = key.to_s
    unless @params[key] == 'true' || @params[key] == 'false'
      @invalid_params.push(key)
      @messages.push(:name => key, :error => :NOT_BOOLEAN)
    end
  end
end
is_email(key) click to toggle source
# File lib/rack/validator/sinatra.rb, line 121
def is_email(key)
  if lazy_check_disabled
    key = key.to_s
    unless @params[key].to_s[/^\S+@\S+\.\S+$/]
      @invalid_params.push(key)
      @messages.push(:name => key, :error => :NOT_VALID_EMAIL)
    end
  end
end
is_float(key) click to toggle source
# File lib/rack/validator/sinatra.rb, line 56
def is_float(key)
  if lazy_check_disabled
    key = key.to_s
    value = @params[key]
    unless is_valid_float(value)
      @invalid_params.push(key)
      @messages.push(:name => key, :error => :NOT_FLOAT)
    end
  end
end
is_greater_equal_than(min, key) click to toggle source
# File lib/rack/validator/sinatra.rb, line 67
def is_greater_equal_than(min, key)
  if lazy_check_disabled
    key = key.to_s
    if !is_valid_float(@params[key])
      if !@params[key] || @params[key].length < min
        @invalid_params.push(key)
        @messages.push(:name => key, :error => :LESS_THAN, :value => min)
      end
    else
      value = is_valid_integer(@params[key]) ? @params[key].to_i : @params[key].to_f
      if  !value || value < min
        @invalid_params.push(key)
        @messages.push(:name => key, :error => :LESS_THAN, :value => min)
      end
    end
  end
end
is_in_range(min, max, key) click to toggle source
# File lib/rack/validator/sinatra.rb, line 85
def is_in_range(min, max, key)
  if lazy_check_disabled
    key = key.to_s
    unless is_valid_float(@params[key])
      if !@params[key] || @params[key].length < min || @params[key].length > max
        @invalid_params.push(key)
        @messages.push(:name => key, :error => :NOT_IN_RANGE, :value => [ min, max ])
      end
    else
      value = is_valid_integer(@params[key]) ? @params[key].to_i : @params[key].to_f
      if !value || value < min || value > max
        @invalid_params.push(key)
        @messages.push(:name => key, :error => :NOT_IN_RANGE, :value => [ min, max ])
      end
    end
  end
end
is_integer(key) click to toggle source
# File lib/rack/validator/sinatra.rb, line 45
def is_integer(key)
  if lazy_check_disabled
    key = key.to_s
    value = @params[key]
    unless is_valid_integer(value)
      @invalid_params.push(key)
      @messages.push(:name => key, :error => :NOT_INTEGER)
    end
  end
end
is_less_equal_than(max, key) click to toggle source
# File lib/rack/validator/sinatra.rb, line 103
def is_less_equal_than(max, key)
  if lazy_check_disabled
    key = key.to_s
    unless is_valid_float(@params[key])
      if !@params[key] || @params[key].length > max
        @invalid_params.push(key)
        @messages.push(:name => key, :error => :GREATER_THAN, :value => max)
      end
    else
      value = is_valid_integer(@params[key]) ? @params[key].to_i : @params[key].to_f
      if !value || value > max
        @invalid_params.push(key)
        @messages.push(:name => key, :error => :GREATER_THAN, :value => max)
      end
    end
  end
end
is_set(array, key) click to toggle source
# File lib/rack/validator/sinatra.rb, line 131
def is_set(array, key)
  if lazy_check_disabled
    key = key.to_s
    unless array.include? @params[key]
      @invalid_params.push(key)
      @messages.push(:name => key, :error => :NOT_IN_SET, :value => array)
    end
  end
end
matches(regexp, key) click to toggle source
# File lib/rack/validator/sinatra.rb, line 151
def matches(regexp, key)
  if lazy_check_disabled
    key = key.to_s
    unless @params[key] =~ regexp
      @invalid_params.push(key)
      @messages.push(:name => key, :error => :NOT_MATCHED, :value => regexp)
    end
  end
end
required(keys) click to toggle source
# File lib/rack/validator/sinatra.rb, line 32
def required(keys)
  if lazy_check_disabled
    keys.each { |k|
      k = k.to_s
      unless @params.has_key?(k) && !@params[k].empty?
        @invalid_params.push(k)
        @missing_params.push(k)
        @messages.push(:name => k, :error => :REQUIRED)
      end
    }
  end
end
trim(key) click to toggle source
# File lib/rack/validator/sinatra.rb, line 24
def trim(key)
  @params[key.to_s] = @params[key.to_s].strip if @params[key.to_s]
end

Private Instance Methods

is_valid_float(value) click to toggle source
# File lib/rack/validator/sinatra.rb, line 178
def is_valid_float(value)
  key = key.to_s
  value.to_f.to_s == value.to_s || is_valid_integer(value)
end
is_valid_integer(value) click to toggle source
# File lib/rack/validator/sinatra.rb, line 173
def is_valid_integer(value)
  key = key.to_s
  value.to_i.to_s == value.to_s
end
lazy_check_disabled() click to toggle source
# File lib/rack/validator/sinatra.rb, line 169
def lazy_check_disabled
  return !@lazy_mode || !has_errors?
end