class FileFM::StreamingUploader::MultipartStream
Public Class Methods
new(parts, blk = nil)
click to toggle source
# File lib/filefm/streaming_uploader.rb, line 145 def initialize(parts, blk = nil) @callback = nil if blk @callback = blk end @parts = parts @part_no = 0 @part_offset = 0 end
Public Instance Methods
read(how_much)
click to toggle source
# File lib/filefm/streaming_uploader.rb, line 159 def read(how_much) @callback.call(how_much) if @callback return nil if @part_no >= @parts.size how_much_current_part = @parts[@part_no].size - @part_offset how_much_current_part = if how_much_current_part > how_much how_much else how_much_current_part end how_much_next_part = how_much - how_much_current_part current_part = @parts[@part_no].read(@part_offset, how_much_current_part) # recurse into the next part if the current one was not large enough if how_much_next_part > 0 @part_no += 1 @part_offset = 0 next_part = read(how_much_next_part) current_part + if next_part next_part else '' end else @part_offset += how_much_current_part current_part end end
size()
click to toggle source
# File lib/filefm/streaming_uploader.rb, line 155 def size @parts.inject(0) {|size, part| size + part.size} end