module Faraday::FlatParamsEncoder

def self.decode(query)

def self.decode(query)
  empty_accumulator = {}
  return nil if query == nil
  split_query = (query.split('&').map do |pair|
    pair.split('=', 2) if pair && !pair.empty?
  end).compact
  return split_query.inject(empty_accumulator.dup) do |accu, pair|
    pair[0] = unescape(pair[0])
    pair[1] = true if pair[1].nil?
    if pair[1].respond_to?(:to_str)
      pair[1] = unescape(pair[1].to_str.gsub(/\+/, " "))
    end
    if accu[pair[0]].kind_of?(Array)
      accu[pair[0]] << pair[1]
    elsif accu[pair[0]]
      accu[pair[0]] = [accu[pair[0]], pair[1]]
    else
      accu[pair[0]] = pair[1]
    end
    accu
  end
end