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
-
#check_boolean(name, value) ⇒ NilClass
Test if a parameter is a boolean.
-
#validate_length_parameter(type, params, length_param_name) ⇒ Integer
Validate a length param like minLength and maxLength.
-
#validate_length_parameters(type, params) ⇒ Object
Validate the length parameters minLength and maxLength.
-
#validate_limit_parameter(type, params, limit_param_name, exclusive_limit_param_name) ⇒ Object
Validate a limit param like maximum and exclusiveMaximum.
-
#validate_limit_parameters(type, params) ⇒ Object
Validate the limit parameters.
-
#validate_params(type, params) ⇒ Object
Validate parameters.
Instance Method Details
#check_boolean(name, value) ⇒ NilClass
Test if a parameter is a boolean
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
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
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
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
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
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 |