lib/httpx/transcoder.rb in httpx-0.10.0 vs lib/httpx/transcoder.rb in httpx-0.10.1

- old
+ new

@@ -1,9 +1,27 @@ # frozen_string_literal: true module HTTPX module Transcoder extend Registry + + def self.normalize_keys(key, value, &block) + if value.respond_to?(:to_ary) + if value.empty? + block.call("#{key}[]") + else + value.to_ary.each do |element| + normalize_keys("#{key}[]", element, &block) + end + end + elsif value.respond_to?(:to_hash) + value.to_hash.each do |child_key, child_value| + normalize_keys("#{key}[#{child_key}]", child_value, &block) + end + else + block.call(key.to_s, value) + end + end end end require "httpx/transcoder/body" require "httpx/transcoder/form"