module Excon::Utils

def query_string(datum)

def query_string(datum)
  str = +''
  case datum[:query]
  when String
    str << '?' << datum[:query]
  when Hash
    str << '?'
    datum[:query].sort_by { |k, _| k.to_s }.each do |key, values|
      key = CGI.escape(key.to_s)
      if values.nil?
        str << key << '&'
      else
        [values].flatten.each do |value|
          str << key << '=' << CGI.escape(value.to_s) << '&'
        end
      end
    end
    str.chop! # remove trailing '&'
  end
  str
end