module HTTPClient::DebugSocket

def <<(str)

def <<(str)
  super
  debug(str)
end

def close

def close
  super
  debug("! CONNECTION CLOSED\n")
end

def debug(str)

def debug(str)
  if str && @debug_dev
    if str.index("\0")
      require 'hexdump'
      str.force_encoding('BINARY') if str.respond_to?(:force_encoding)
      @debug_dev << HexDump.encode(str).join("\n")
    else
      @debug_dev << str
    end
  end
end

def debug_dev=(debug_dev)

def debug_dev=(debug_dev)
  @debug_dev = debug_dev
end

def gets(*args)

def gets(*args)
  str = super
  debug(str)
  str
end

def read(*args)

def read(*args)
  str = super
  debug(str)
  str
end

def readpartial(*args)

def readpartial(*args)
  str = super
  debug(str)
  str
end