Module: Sinatra::SwaggerExposer::Configuration::SwaggerParameterValidationHelper

Includes:
SwaggerParameterHelper
Included in:
SwaggerEndpointParameter, SwaggerResponseHeader, SwaggerTypeProperty
Defined in:
lib/sinatra/swagger-exposer/configuration/swagger-parameter-validation-helper.rb

Overview

Helper for validating parameters

Constant Summary

Constants included from SwaggerParameterHelper

SwaggerParameterHelper::HOW_TO_PASS, SwaggerParameterHelper::HOW_TO_PASS_BODY, SwaggerParameterHelper::HOW_TO_PASS_HEADER, SwaggerParameterHelper::HOW_TO_PASS_PATH, SwaggerParameterHelper::HOW_TO_PASS_QUERY, SwaggerParameterHelper::PARAMS_DEFAULT, SwaggerParameterHelper::PARAMS_EXAMPLE, SwaggerParameterHelper::PARAMS_EXCLUSIVE_MAXIMUM, SwaggerParameterHelper::PARAMS_EXCLUSIVE_MINIMUM, SwaggerParameterHelper::PARAMS_FORMAT, SwaggerParameterHelper::PARAMS_LIST, SwaggerParameterHelper::PARAMS_MAXIMUM, SwaggerParameterHelper::PARAMS_MAX_LENGTH, SwaggerParameterHelper::PARAMS_MINIMUM, SwaggerParameterHelper::PARAMS_MIN_LENGTH, SwaggerParameterHelper::PRIMITIVE_TYPES, SwaggerParameterHelper::PRIMITIVE_TYPES_FOR_NON_BODY, SwaggerParameterHelper::TYPE_ARRAY, SwaggerParameterHelper::TYPE_BOOLEAN, SwaggerParameterHelper::TYPE_BYTE, SwaggerParameterHelper::TYPE_DATE, SwaggerParameterHelper::TYPE_DATE_TIME, SwaggerParameterHelper::TYPE_DOUBLE, SwaggerParameterHelper::TYPE_FILE, SwaggerParameterHelper::TYPE_FLOAT, SwaggerParameterHelper::TYPE_INTEGER, SwaggerParameterHelper::TYPE_LONG, SwaggerParameterHelper::TYPE_NUMBER, SwaggerParameterHelper::TYPE_PASSWORD, SwaggerParameterHelper::TYPE_STRING

Instance Method Summary collapse

Instance Method Details

#check_boolean(name, value) ⇒ NilClass

Test if a parameter is a boolean

Parameters:

  • name

    the parameter’s name

  • value

    value the parameter’s value

Returns:

  • (NilClass)


26
27
28
29
30
# File 'lib/sinatra/swagger-exposer/configuration/swagger-parameter-validation-helper.rb', line 26

def check_boolean(name, value)
  unless [true, false].include? value
    raise SwaggerInvalidException.new("Invalid boolean value [#{value}] for [#{name}]")
  end
end

#validate_length_parameter(type, params, length_param_name) ⇒ Integer

Validate a length param like minLength and maxLength

Parameters:

  • type (String)

    the parameter type

  • params (Hash)

    the parameters

  • length_param_name (Symbol)

    the length parameter name

Returns:

  • (Integer)

    the parameter value if it is present



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/sinatra/swagger-exposer/configuration/swagger-parameter-validation-helper.rb', line 86

def validate_length_parameter(type, params, length_param_name)
  if params.key? length_param_name
    if type == TYPE_STRING
      parameter_value = params[length_param_name]
      unless parameter_value.is_a? Integer
        raise SwaggerInvalidException.new("Parameter #{length_param_name} must be an integer and can not be [#{parameter_value}]")
      end
      parameter_value
    else
      raise SwaggerInvalidException.new("Parameter #{length_param_name} can only be specified for type #{TYPE_STRING} and not for [#{@type}]")
    end

  else
    nil
  end
end

#validate_length_parameters(type, params) ⇒ Object

Validate the length parameters minLength and maxLength

Parameters:

  • type (String)

    the parameter type

  • params (Hash)

    the parameters



72
73
74
75
76
77
78
79
# File 'lib/sinatra/swagger-exposer/configuration/swagger-parameter-validation-helper.rb', line 72

def validate_length_parameters(type, params)
  min_length = validate_length_parameter(type, params, PARAMS_MIN_LENGTH)
  max_length = validate_length_parameter(type, params, PARAMS_MAX_LENGTH)

  if min_length && max_length && (max_length < min_length)
    raise SwaggerInvalidException.new("Minimum length #{min_length} can't be more than maximum length #{max_length}")
  end
end

#validate_limit_parameter(type, params, limit_param_name, exclusive_limit_param_name) ⇒ Object

Validate a limit param like maximum and exclusiveMaximum

Parameters:

  • type (String)

    the parameter type

  • params (Hash)

    the parameters

  • limit_param_name (Symbol)

    the limit parameter name

  • exclusive_limit_param_name (Symbol)

    the exclusive limit parameter name



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/sinatra/swagger-exposer/configuration/swagger-parameter-validation-helper.rb', line 48

def validate_limit_parameter(type, params, limit_param_name, exclusive_limit_param_name)
  parameter_value = nil
  if params.key? limit_param_name
    unless [TYPE_INTEGER, TYPE_NUMBER].include? @type
      raise SwaggerInvalidException.new("Parameter #{limit_param_name} can only be specified for types #{TYPE_INTEGER} or #{TYPE_NUMBER} and not for [#{@type}]")
    end
    parameter_value = params[limit_param_name]
    unless parameter_value.is_a? Numeric
      raise SwaggerInvalidException.new("Parameter #{limit_param_name} must be a numeric and can not be [#{parameter_value}]")
    end
  end

  if params.key? exclusive_limit_param_name
    check_boolean(exclusive_limit_param_name, params[exclusive_limit_param_name])
    unless params.key? limit_param_name
      raise SwaggerInvalidException.new("You can't have a #{exclusive_limit_param_name} value without a #{limit_param_name}")
    end
  end
  parameter_value
end

#validate_limit_parameters(type, params) ⇒ Object

Validate the limit parameters

Parameters:

  • type (String)

    the parameter type

  • params (Hash)

    the parameters



35
36
37
38
39
40
41
# File 'lib/sinatra/swagger-exposer/configuration/swagger-parameter-validation-helper.rb', line 35

def validate_limit_parameters(type, params)
  max = validate_limit_parameter(type, params, PARAMS_MAXIMUM, PARAMS_EXCLUSIVE_MAXIMUM)
  min = validate_limit_parameter(type, params, PARAMS_MINIMUM, PARAMS_EXCLUSIVE_MINIMUM)
  if min && max && (max < min)
    raise SwaggerInvalidException.new("Minimum value [#{min}] can't be more than maximum value [#{max}]")
  end
end

#validate_params(type, params) ⇒ Object

Validate parameters

Parameters:

  • type (String)

    the parameter type

  • params (Hash)


17
18
19
20
# File 'lib/sinatra/swagger-exposer/configuration/swagger-parameter-validation-helper.rb', line 17

def validate_params(type, params)
  validate_limit_parameters(type, params)
  validate_length_parameters(type, params)
end