Sha256: ffb7624e85b62e62154a65fa4f3297315209bb9ee59975e66fff88bc721d69b6

Contents?: true

Size: 1.28 KB

Versions: 5

Compression:

Stored size: 1.28 KB

Contents

class SocketSpy < SimpleDelegator
  def write(content)
    p :writing => content
    __getobj__.write content
  end

  [:readline, :readuntil, :read_all, :read].each{|symbol|
    define_method(symbol) do |*args|
      content = __getobj__.send(symbol, *args)
      p :reading => content
      content
    end
  }
end

class MethodSpy
  def initialize(delegate, &block)
    @delegate = delegate
    @filter = block
  end

  def method_missing(symbol, *args, &block)
    result = @delegate.send(symbol, *args, &block)
    p [symbol, args, result, block] if @filter && @filter.call(symbol.to_s)
    result
  end
end

class String
  def to_camel_case(split_on='-')
    self.split(split_on).collect{|e| e.capitalize}.join(split_on)
  end
end

module Net::HTTPHeader
  def to_hash
    new_headers = @header.dup
    @header.each do |k,v|
      new_headers.delete(k)
      new_headers[k.to_camel_case] = v
    end
    new_headers
  end
end

class Net::HTTP::Post
  # handle multiple parameters with the same name
  def form_data=(params, sep = '&')
    self.body = params.map {|key,value|
      if value.is_a?(Array)
        value.map{|v| param_line(key, v) }
      else
        param_line(key, value)
      end
    }.join(sep)
  end

  def param_line(k, v)
    "#{urlencode(k.to_s)}=#{urlencode(v.to_s)}"
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
mikehale-rat-hole-0.1.8 lib/util.rb
mikehale-rat-hole-0.1.9 lib/util.rb
rat-hole-0.1.11 lib/util.rb
rat-hole-0.1.10 lib/util.rb
rat-hole-0.1.9 lib/util.rb