Class: Sinatra::SwaggerExposer::Processing::SwaggerPrimitiveValueProcessor
- Inherits:
-
SwaggerBaseValueProcessor
- Object
- SwaggerBaseValueProcessor
- Sinatra::SwaggerExposer::Processing::SwaggerPrimitiveValueProcessor
- Includes:
- SwaggerParameterHelper
- Defined in:
- lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb
Overview
Validate primitive value
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 Attribute Summary collapse
-
#params ⇒ Object
readonly
Returns the value of attribute params.
-
#type ⇒ Object
readonly
Returns the value of attribute type.
Attributes inherited from SwaggerBaseValueProcessor
Instance Method Summary collapse
-
#initialize(name, required, type, default, params) ⇒ SwaggerPrimitiveValueProcessor
constructor
Initialize.
- #useful? ⇒ Boolean
-
#validate_numerical_value(value) ⇒ Object
Validate a numerical value.
-
#validate_numerical_value_internal(value, limit_param_name, exclusive_limit_param_name, limit_param_method, exclusive_limit_param_method) ⇒ Object
Validate the value of a number.
-
#validate_value(value) ⇒ Object
Dispatch method.
-
#validate_value_boolean(value) ⇒ Object
Validate a boolean.
-
#validate_value_date_time(value) ⇒ Object
Validate a date time.
-
#validate_value_integer(value) ⇒ Object
Validate an integer.
-
#validate_value_number(value) ⇒ Object
Validate a number value.
-
#validate_value_string(value) ⇒ Object
Validate a string.
-
#validate_value_string_length(value, limit_param_name, limit_param_method) ⇒ Object
Validate the length of a string.
Methods inherited from SwaggerBaseValueProcessor
Constructor Details
#initialize(name, required, type, default, params) ⇒ SwaggerPrimitiveValueProcessor
Initialize
26 27 28 29 30 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 26 def initialize(name, required, type, default, params) super(name, required, default) @type = type @params = params end |
Instance Attribute Details
#params ⇒ Object (readonly)
Returns the value of attribute params.
18 19 20 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 18 def params @params end |
#type ⇒ Object (readonly)
Returns the value of attribute type.
18 19 20 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 18 def type @type end |
Instance Method Details
#useful? ⇒ Boolean
32 33 34 35 36 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 32 def useful? super || [TYPE_NUMBER, TYPE_INTEGER, TYPE_BOOLEAN, TYPE_DATE_TIME].include?(@type) || # Must check type (@params.key? PARAMS_MIN_LENGTH) || (@params.key? PARAMS_MAX_LENGTH) # Must check string end |
#validate_numerical_value(value) ⇒ Object
Validate a numerical value
100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 100 def validate_numerical_value(value) validate_numerical_value_internal( value, PARAMS_MINIMUM, PARAMS_EXCLUSIVE_MINIMUM, '>=', '>') validate_numerical_value_internal( value, PARAMS_MAXIMUM, PARAMS_EXCLUSIVE_MAXIMUM, '<=', '<') end |
#validate_numerical_value_internal(value, limit_param_name, exclusive_limit_param_name, limit_param_method, exclusive_limit_param_method) ⇒ Object
Validate the value of a number
152 153 154 155 156 157 158 159 160 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 152 def validate_numerical_value_internal(value, limit_param_name, exclusive_limit_param_name, limit_param_method, exclusive_limit_param_method) if @params.key? limit_param_name target_value = @params[limit_param_name] method_to_call = @params[exclusive_limit_param_name] ? exclusive_limit_param_method : limit_param_method unless value.send(method_to_call, target_value) raise SwaggerInvalidException.new("Value [#{name}] should be #{method_to_call} than [#{target_value}] but is [#{value}]") end end end |
#validate_value(value) ⇒ Object
Dispatch method
39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 39 def validate_value(value) case @type when TYPE_NUMBER return validate_value_number(value) when TYPE_INTEGER return validate_value_integer(value) when TYPE_BOOLEAN return validate_value_boolean(value) when TYPE_DATE_TIME return validate_value_date_time(value) else return validate_value_string(value) end end |
#validate_value_boolean(value) ⇒ Object
Validate a boolean
55 56 57 58 59 60 61 62 63 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 55 def validate_value_boolean(value) if (value == 'true') || value.is_a?(TrueClass) true elsif (value == 'false') || value.is_a?(FalseClass) false else raise SwaggerInvalidException.new("Value [#{name}] should be an boolean but is [#{value}]") end end |
#validate_value_date_time(value) ⇒ Object
Validate a date time
116 117 118 119 120 121 122 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 116 def validate_value_date_time(value) begin DateTime.rfc3339(value) rescue ArgumentError raise SwaggerInvalidException.new("Value [#{name}] should be a date time but is [#{value}]") end end |
#validate_value_integer(value) ⇒ Object
Validate an integer
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 66 def validate_value_integer(value) begin f = Float(value) i = Integer(value) if f == i i else raise SwaggerInvalidException.new("Value [#{name}] should be an integer but is [#{value}]") end value = Integer(value) validate_numerical_value(value) value rescue ArgumentError raise SwaggerInvalidException.new("Value [#{name}] should be an integer but is [#{value}]") rescue TypeError raise SwaggerInvalidException.new("Value [#{name}] should be an integer but is [#{value}]") end end |
#validate_value_number(value) ⇒ Object
Validate a number value
86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 86 def validate_value_number(value) begin value = Float(value) validate_numerical_value(value) return value rescue ArgumentError raise SwaggerInvalidException.new("Value [#{name}] should be a float but is [#{value}]") rescue TypeError raise SwaggerInvalidException.new("Value [#{name}] should be a float but is [#{value}]") end end |
#validate_value_string(value) ⇒ Object
Validate a string
125 126 127 128 129 130 131 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 125 def validate_value_string(value) if value validate_value_string_length(value, PARAMS_MIN_LENGTH, '>=') validate_value_string_length(value, PARAMS_MAX_LENGTH, '<=') end value end |
#validate_value_string_length(value, limit_param_name, limit_param_method) ⇒ Object
Validate the length of a string
137 138 139 140 141 142 143 144 |
# File 'lib/sinatra/swagger-exposer/processing/swagger-primitive-value-processor.rb', line 137 def validate_value_string_length(value, limit_param_name, limit_param_method) if @params.key? limit_param_name target_value = @params[limit_param_name] unless value.length.send(limit_param_method, target_value) raise SwaggerInvalidException.new("Value [#{name}] length should be #{limit_param_method} than #{target_value} but is #{value.length} for [#{value}]") end end end |