Sha256: cdc7005f2b3b213ea89885ad339aed8457861c47d7ebaee6c4466efd680cf964

Contents?: true

Size: 1.41 KB

Versions: 3

Compression:

Stored size: 1.41 KB

Contents

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 = ParamProcessor.traverse_params_hash hash, result, current_key
    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

    # Return a byteslice from a string; uses String#[] under Ruby 1.8 and
    # String#byteslice under 1.9.
    if ''.respond_to?(:byteslice)
      def byteslice(string, *args)
        string.byteslice(*args)
      end
    else
      def byteslice(string, *args)
        string[*args]
      end
    end
    module_function :byteslice
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
typhoeus-0.4.2 lib/typhoeus/utils.rb
typhoeus-0.4.1 lib/typhoeus/utils.rb
typhoeus-0.4.0 lib/typhoeus/utils.rb