class Aws::S3::FilePart

@api private
on disk.
A utility class that provides an IO-like interface to a portion of a file

def close

def close
  @file.close if @file
end

def initialize(options = {})

Options Hash: (**options)
  • :size (required, Integer) -- The maximum number of bytes to
  • :offset (required, Integer) -- The file part will read
  • :source (required, String, Pathname, File, Tempfile) --
def initialize(options = {})
  @source = options[:source]
  @first_byte = options[:offset]
  @last_byte = @first_byte + options[:size]
  @size = options[:size]
  @file = nil
end

def open_file

def open_file
  @file = File.open(@source, 'rb')
  rewind
end

def read(bytes = nil, output_buffer = nil)

def read(bytes = nil, output_buffer = nil)
  open_file unless @file
  read_from_file(bytes, output_buffer)
end

def read_from_file(bytes, output_buffer)

def read_from_file(bytes, output_buffer)
  length = [remaining_bytes, *bytes].min
  data   = @file.read(length, output_buffer)
  @position += data ? data.bytesize : 0
  data.to_s unless bytes && (data.nil? || data.empty?)
end

def remaining_bytes

def remaining_bytes
  @last_byte - @position
end

def rewind

def rewind
  if @file
    @file.seek(@first_byte)
    @position = @first_byte
  end
  0
end