module ThreeScale::Client::RackQuery

Public Class Methods

encode(hash) click to toggle source
# File lib/3scale/client/rack_query.rb, line 8
def encode(hash)
  hash.flat_map do |hk, hv|
    encode_value(CGI.escape(hk.to_s), hv)
  end.join('&'.freeze)
end

Private Class Methods

encode_array(rack_param, val) click to toggle source
# File lib/3scale/client/rack_query.rb, line 26
def encode_array(rack_param, val)
  rack_param = rack_param + '[]'
  val.flat_map do |v|
    encode_value(rack_param, v)
  end
end
encode_hash(rack_param, val) click to toggle source
# File lib/3scale/client/rack_query.rb, line 33
def encode_hash(rack_param, val)
  val.flat_map do |k, v|
    encode_value(rack_param + "[#{CGI.escape(k.to_s)}]", v)
  end
end
encode_value(rack_param, val) click to toggle source
# File lib/3scale/client/rack_query.rb, line 16
def encode_value(rack_param, val)
  if val.is_a? Array
    encode_array(rack_param, val)
  elsif val.is_a? Hash
    encode_hash(rack_param, val)
  else
    "#{rack_param}=#{CGI.escape(val.to_s)}"
  end
end