Typhoeus::Utils

Public Class Methods

bytesize(string) click to toggle source
# File lib/typhoeus/utils.rb, line 53
def bytesize(string)
  string.bytesize
end
escape(s) click to toggle source

Taken from Rack::Utils, 1.2.1 to remove Rack dependency.

# File lib/typhoeus/utils.rb, line 6
def escape(s)
  s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/) {
    '%'+$1.unpack('H2'*bytesize($1)).join('%').upcase
  }.tr(' ', '+')
end
traversal_to_param_string(traversal, escape = true) click to toggle source
# File lib/typhoeus/utils.rb, line 43
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
traverse_params_hash(hash, result = nil, current_key = nil) click to toggle source

Params are NOT escaped.

# File lib/typhoeus/utils.rb, line 14
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

[Validate]

Generated with the Darkfish Rdoc Generator 2.