class HTTP::Message::Body

def dump(header = '', dev = '')

String.
If no dev (the second argument) given, this method returns a dumped
reason. (header is dumped to dev, too)
Message header must be given as the first argument for performance

dev needs to respond to <<.
Dumps message body to given dev.
def dump(header = '', dev = '')
  if @body.is_a?(Parts)
    dev << header
    @body.parts.each do |part|
      if Message.file?(part)
        reset_pos(part)
        dump_file(part, dev)
      else
        dev << part
      end
    end
  elsif Message.file?(@body)
    dev << header
    reset_pos(@body)
    dump_file(@body, dev)
  elsif @body
    dev << header + @body
  else
    dev << header
  end
  dev
end