module Typhoeus::Utils

def bytesize(string)

def bytesize(string)
  string.bytesize
end

def bytesize(string)

def bytesize(string)
  string.size
end

def byteslice(string, *args)

def byteslice(string, *args)
  string.byteslice(*args)
end

def byteslice(string, *args)

def byteslice(string, *args)
  string[*args]
end

def escape(s)

Taken from Rack::Utils, 1.2.1 to remove Rack dependency.
def escape(s)
  s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/u) {
    '%'+$1.unpack('H2'*bytesize($1)).join('%').upcase
  }.tr(' ', '+')
end

def traversal_to_param_string(traversal, escape = true)

def traversal_to_param_string(traversal, escape = true)
  traversal[:params].collect { |param|
    escape ? "#{Typhoeus::Utils.escape(param[0])}=#{Typhoeus::Utils.escape(param[1])}" : "#{param[0]}=#{param[1]}"
  }.join('&')
end

def traverse_params_hash(hash, result = nil, current_key = nil)

Params are NOT escaped.
def traverse_params_hash(hash, result = nil, current_key = nil)
  result = ParamProcessor.traverse_params_hash hash, result, current_key
end