lib/elevate/http/uri.rb in elevate-0.5.0 vs lib/elevate/http/uri.rb in elevate-0.6.0
- old
+ new
@@ -1,7 +1,36 @@
module Elevate
module HTTP
module URI
+ def self.encode_www_form(enum)
+ enum.map do |k,v|
+ if v.nil?
+ encode_www_form_component(k)
+ elsif v.respond_to?(:to_ary)
+ v.to_ary.map do |w|
+ str = encode_www_form_component(k)
+
+ if w.nil?
+ str
+ else
+ str + "=" + encode_www_form_component(w)
+ end
+ end.join('&')
+ else
+ encode_www_form_component(k) + "=" + encode_www_form_component(v)
+ end
+ end.join('&')
+ end
+
+ def self.encode_www_form_component(str)
+ # From AFNetworking :)
+ CFURLCreateStringByAddingPercentEscapes(nil,
+ str,
+ "[].",
+ ":/?&=;+!@\#$()~',*",
+ CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding))
+ end
+
def self.encode_query(hash)
return "" if hash.nil? || hash.empty?
hash.map do |key, value|
"#{URI.escape_query_component(key.to_s)}=#{URI.escape_query_component(value.to_s)}"