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