class B2::UploadChunker

Attributes

sha1[R]
size[R]

Public Class Methods

new(data) click to toggle source
# File lib/b2/upload_chunker.rb, line 5
def initialize(data)
  @data = data
  @sha_appended = false
  @digestor = Digest::SHA1.new
  @size = if data.is_a?(String)
    data.bytesize + 40
  else
    data.size + 40
  end
end

Public Instance Methods

read(length=nil, outbuf=nil) click to toggle source
# File lib/b2/upload_chunker.rb, line 16
def read(length=nil, outbuf=nil)
  return_value = @data.read(length, outbuf)
  
  if outbuf.nil?
    if return_value.nil? && !@sha_appended
      @sha_appended = true
      @digestor.hexdigest
    else
      @digestor << return_value
      return_value
    end
  else
    if outbuf.empty? && !@sha_appended
      @sha_appended = true
      outbuf.replace(@digestor.hexdigest)
    else
      @digestor << outbuf
    end
    outbuf
  end
end