class Gitlab::Triage::ParamsValidator

Constants

InvalidParameter

Public Class Methods

new(parameter_definitions, value) click to toggle source
# File lib/gitlab/triage/validators/params_validator.rb, line 6
def initialize(parameter_definitions, value)
  @parameter_definitions = parameter_definitions
  @value = value
end

Public Instance Methods

validate!() click to toggle source
# File lib/gitlab/triage/validators/params_validator.rb, line 11
def validate!
  validate_required_parameters(@value)
  validate_parameter_types(@value)
  validate_parameter_content(@value)
end

Private Instance Methods

validate_parameter_content(value) click to toggle source
# File lib/gitlab/triage/validators/params_validator.rb, line 34
def validate_parameter_content(value)
  @parameter_definitions.each do |param|
    if param[:values]
      raise InvalidParameter, "#{param[:name]} must be one of #{param[:values].join(',')}" unless param[:values].include?(value[param[:name]])
    end
  end
end
validate_parameter_types(value) click to toggle source
# File lib/gitlab/triage/validators/params_validator.rb, line 25
def validate_parameter_types(value)
  @parameter_definitions.each do |param|
    if value.has_key?(param[:name])
      param_types = Array(param[:type]).flatten
      raise InvalidParameter, "#{param[:name]} must be of type #{param[:type]}" unless param_types.any? { |type| value[param[:name]].is_a?(type) }
    end
  end
end
validate_required_parameters(value) click to toggle source
# File lib/gitlab/triage/validators/params_validator.rb, line 19
def validate_required_parameters(value)
  @parameter_definitions.each do |param|
    raise InvalidParameter, "#{param[:name]} is a required parameter" unless value[param[:name]]
  end
end