URL-encode values (as well as keys) in GET params

This commit is contained in:
Evan Broder 2012-09-14 20:01:44 -07:00
parent cdde220990
commit 6b58d14fc1
2 changed files with 3 additions and 3 deletions

View File

@ -116,7 +116,7 @@ module Stripe
when :get, :head, :delete
# Make params into GET parameters
if params && params.count
query_string = Util.flatten_params(params).collect{|p| "#{p[0]}=#{p[1]}"}.join('&')
query_string = Util.flatten_params(params).collect{|key, value| "#{key}=#{Util.url_encode(value)}"}.join('&')
url += "?#{query_string}"
end
payload = nil

View File

@ -67,14 +67,14 @@ module Stripe
end
end
def self.encode_key(key)
def self.url_encode(key)
URI.escape(key.to_s, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
end
def self.flatten_params(params, parent_key=nil)
result = []
params.each do |key, value|
calculated_key = parent_key ? "#{parent_key}[#{encode_key(key)}]" : encode_key(key)
calculated_key = parent_key ? "#{parent_key}[#{url_encode(key)}]" : url_encode(key)
if value.is_a?(Hash)
result += flatten_params(value, calculated_key)
elsif value.is_a?(Array)