Class: Rack::Files::BaseIterator

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/files.rb

Direct Known Subclasses

Iterator

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, ranges, options) ⇒ BaseIterator

Returns a new instance of BaseIterator.



124
125
126
127
128
# File 'lib/rack/files.rb', line 124

def initialize(path, ranges, options)
  @path = path
  @ranges = ranges
  @options = options
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



122
123
124
# File 'lib/rack/files.rb', line 122

def options
  @options
end

#pathObject (readonly)

Returns the value of attribute path.



122
123
124
# File 'lib/rack/files.rb', line 122

def path
  @path
end

#rangesObject (readonly)

Returns the value of attribute ranges.



122
123
124
# File 'lib/rack/files.rb', line 122

def ranges
  @ranges
end

Instance Method Details

#bytesizeObject



144
145
146
147
148
149
150
151
# File 'lib/rack/files.rb', line 144

def bytesize
  size = ranges.inject(0) do |sum, range|
    sum += multipart_heading(range).bytesize if multipart?
    sum += range.size
  end
  size += "\r\n--#{MULTIPART_BOUNDARY}--\r\n".bytesize if multipart?
  size
end

#closeObject



153
# File 'lib/rack/files.rb', line 153

def close; end

#eachObject



130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/rack/files.rb', line 130

def each
  ::File.open(path, "rb") do |file|
    ranges.each do |range|
      yield multipart_heading(range) if multipart?

      each_range_part(file, range) do |part|
        yield part
      end
    end

    yield "\r\n--#{MULTIPART_BOUNDARY}--\r\n" if multipart?
  end
end