Sha256: dcace26613eea698ad48071dd1ec66508b0ac2caf67329d4a1a53f98b81919dc
Contents?: true
Size: 1.84 KB
Versions: 3
Compression:
Stored size: 1.84 KB
Contents
require 'tempfile' module Typhoeus module Utils # 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 module_function :escape # Params are NOT escaped. def traverse_params_hash(hash, result = nil, current_key = nil) result ||= { :files => [], :params => [] } hash.keys.sort { |a, b| a.to_s <=> b.to_s }.collect do |key| new_key = (current_key ? "#{current_key}[#{key}]" : key).to_s case hash[key] when Hash traverse_params_hash(hash[key], result, new_key) when Array hash[key].each do |v| result[:params] << [new_key, v.to_s] end when File, Tempfile filename = File.basename(hash[key].path) types = MIME::Types.type_for(filename) result[:files] << [ new_key, filename, types.empty? ? 'application/octet-stream' : types[0].to_s, File.expand_path(hash[key].path) ] else result[:params] << [new_key, hash[key].to_s] end end result end module_function :traverse_params_hash 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 module_function :traversal_to_param_string # Return the bytesize of String; uses String#size under Ruby 1.8 and # String#bytesize under 1.9. if ''.respond_to?(:bytesize) def bytesize(string) string.bytesize end else def bytesize(string) string.size end end module_function :bytesize end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
typhoeus-0.3.3 | lib/typhoeus/utils.rb |
typhoeus-0.3.2 | lib/typhoeus/utils.rb |
xenda-typhoeus-0.2.4 | lib/typhoeus/utils.rb |