lib/openapi_parameters/query.rb in openapi_parameters-0.2.1 vs lib/openapi_parameters/query.rb in openapi_parameters-0.2.2
- old
+ new
@@ -22,12 +22,12 @@
result[parameter.name] = convert(parsed_nested_query[parameter.name], parameter)
else
next unless parsed_query.key?(parameter.name)
- unpacked = unpack_parameter(parameter, parsed_query)
- result[parameter.name] = convert(unpacked, parameter)
+ value = Unpacker.unpack_value(parameter, parsed_query[parameter.name])
+ result[parameter.name] = convert(value, parameter)
end
end
end
attr_reader :parameters
@@ -37,46 +37,8 @@
def convert(value, parameter)
return value unless @convert
return value if value == ''
Converter.call(value, parameter.schema)
- end
-
- QUERY_PARAMETER_DELIMETER = '&'
- ARRAY_DELIMER = ','
-
- def unpack_parameter(parameter, parsed_query)
- value = parsed_query[parameter.name]
- return value if parameter.primitive? || value.nil?
- return unpack_array(parameter, parsed_query) if parameter.array?
- return unpack_object(parameter, parsed_query) if parameter.object?
- end
-
- def unpack_array(parameter, parsed_query)
- value = parsed_query[parameter.name]
- return value if value.empty?
- return Array(value) if parameter.explode?
-
- value.split(array_delimiter(parameter.style))
- end
-
- def unpack_object(parameter, parsed_query)
- return parsed_query[parameter.name] if parameter.explode?
-
- array = parsed_query[parameter.name]&.split(ARRAY_DELIMER)
- return array if array.length.odd?
-
- Hash[*array]
- end
-
- DELIMERS = {
- 'pipeDelimited' => '|',
- 'spaceDelimited' => ' ',
- 'form' => ',',
- 'simple' => ','
- }.freeze
-
- def array_delimiter(style)
- DELIMERS.fetch(style, ARRAY_DELIMER)
end
end
end