module Judge::Controller

Constants

CONDITIONAL_PARAMS
REQUIRED_PARAMS

Public Instance Methods

validation(params) click to toggle source
# File lib/judge/controller.rb, line 6
def validation(params)
  params = normalized_params(params)
  if params_present?(params) && params_exposed?(params)
    Validation.new(params)
  else
    NullValidation.new(params)
  end
end

Private Instance Methods

conditional_params_present?(params) click to toggle source
# File lib/judge/controller.rb, line 32
def conditional_params_present?(params)
  CONDITIONAL_PARAMS.each do |required_param, constraint|
    if params[required_param] == constraint.first
      return false unless params[constraint.last]
    end
  end
end
find_klass(name) click to toggle source
# File lib/judge/controller.rb, line 50
def find_klass(name)
  Module.const_get(name.classify)
rescue NameError
  nil
end
normalized_params(params) click to toggle source
# File lib/judge/controller.rb, line 40
def normalized_params(params)
  params = params.dup.keep_if {|k| REQUIRED_PARAMS.include?(k) || (k == 'original_value' && params[:kind] == 'uniqueness')}
  params[:klass]     = find_klass(params[:klass]) if params[:klass]
  params[:attribute] = params[:attribute].to_sym  if params[:attribute]
  params[:value]     = URI.decode(params[:value]) if params[:value]
  params[:kind]      = params[:kind].to_sym       if params[:kind]
  params[:original_value] = URI.decode(params[:original_value]) if params[:original_value]
  params
end
params_exposed?(params) click to toggle source
# File lib/judge/controller.rb, line 20
def params_exposed?(params)
  Judge.config.exposed?(params[:klass], params[:attribute])
end
params_present?(params) click to toggle source
# File lib/judge/controller.rb, line 24
def params_present?(params)
  required_params_present?(params) && conditional_params_present?(params)
end
required_params_present?(params) click to toggle source
# File lib/judge/controller.rb, line 28
def required_params_present?(params)
  REQUIRED_PARAMS.all? {|s| params.key? s} && params.values_at(*REQUIRED_PARAMS).all?
end