# class Gem::StreamUI::VerboseDownloadReporter

A progress reporter that prints out messages about the current progress.

### Attributes

file_name[R]

The current file name being displayed

progress[R]

The current progress (0 to 100)

total_bytes[R]

The total bytes in the file

### Public Class Methods

new(out_stream, *args) click to toggle source

Creates a new verbose download reporter that will display on `out_stream`. The other arguments are ignored.

    # File lib/rubygems/user_interaction.rb, line 602
    def initialize(out_stream, *args)
      @out = out_stream
      @progress = 0
    end

### Public Instance Methods

done() click to toggle source

Indicates the download is complete.

    # File lib/rubygems/user_interaction.rb, line 638
    def done
      @progress = 100 if @units == '%'
      update_display(true, true)
    end

fetch(file_name, total_bytes) click to toggle source

Tells the download reporter that the `file_name` is being fetched and contains `total_bytes`.

    # File lib/rubygems/user_interaction.rb, line 611
    def fetch(file_name, total_bytes)
      @file_name = file_name
      @total_bytes = total_bytes.to_i
      @units = @total_bytes.zero? ? 'B' : '%'

      update_display(false)
    end

update(bytes) click to toggle source

Updates the verbose download reporter for the given number of `bytes`.

    # File lib/rubygems/user_interaction.rb, line 622
    def update(bytes)
      new_progress = if @units == 'B' then
                       bytes
                     else
                       ((bytes.to_f * 100) / total_bytes.to_f).ceil
                     end

      return if new_progress == @progress

      @progress = new_progress
      update_display
    end