module Rack::Validator::Sinatra::Helpers

Public Instance Methods

missing_params!() click to toggle source
# File lib/rack/validator/sinatra.rb, line 272
def missing_params!
  @response.status = 400
end
same_method?(method) click to toggle source
# File lib/rack/validator/sinatra.rb, line 192
def same_method?(method)
  @env['REQUEST_METHOD'] == method.to_s
end
validate_parameters(options) click to toggle source

TODO: Needs a general cleanup!!!

# File lib/rack/validator/sinatra.rb, line 197
def validate_parameters(options)
  validator = Rack::Validator.new params, false
  all_params = [ ]
  required_params = [ ]
  integer_params = [ ]
  float_params = [ ]
  email_params = [ ]
  range_params = [ ]
  set_params = [ ]
  boolean_params = [ ]
  matches_params = [ ]
  default_params = [ ]
  action_params = [ ]

  options[:params].each do |param|
    all_params << (param[:name].to_s)
    required_params << (param[:name]) if param[:required]
    integer_params << (param) if param[:type] == :integer
    float_params << (param) if param[:type] == :float
    email_params << (param) if param[:type] == :email
    range_params << (param) if param[:range]
    set_params << (param) if param[:set]
    boolean_params << (param) if param[:type] == :boolean
    matches_params << (param) if param[:matches]
    default_params << (param) if param[:default]
    action_params << (param) if param[:action]
  end

  validator.clean_parameters all_params

  validator.required required_params

  integer_params.each do |param|
    validator.is_integer param[:name] unless params[param[:name].to_s].nil?
  end
  float_params.each do |param|
    validator.is_float param[:name] unless params[param[:name].to_s].nil?
  end
  email_params.each do |param|
    validator.is_email param[:name] unless params[param[:name].to_s].nil?
  end
  range_params.each do |param|
    validator.is_in_range param[:range].first, param[:range].last, param[:name] unless params[param[:name].to_s].nil?
  end
  set_params.each do |param|
    validator.is_set param[:set], param[:name] unless params[param[:name].to_s].nil?
  end
  boolean_params.each do |param|
    validator.is_boolean param[:name] unless params[param[:name].to_s].nil?
  end
  matches_params.each do |param|
    validator.matches param[:matches], param[:name] unless params[param[:name].to_s].nil?
  end

  default_params.each do |param|
    if params[param[:name].to_s].nil?
      params[param[:name].to_s] = param[:default]
      validator.invalid_params.delete param[:name]
      validator.missing_params.delete param[:name]
    end
  end

  action_params.each do |param|
    validator.downcase param[:name] if param[:action].include? :downcase
    validator.trim param[:name] if param[:action].include? :trim
  end

  if validator.has_errors?
    @env['validator.missing'] = validator.missing_params
    @env['validator.invalid'] = validator.invalid_params
    @env['validator.messages'] = validator.messages
    halt missing_params!
  end
end