class Aws::S3::FilePart
A utility class that provides an IO-like interface to a portion of a file on disk. @api private
Attributes
first_byte[R]
@return [Integer]
last_byte[R]
@return [Integer]
size[R]
@return [Integer]
source[R]
@return [String, Pathname, File, Tempfile]
Public Class Methods
new(options = {})
click to toggle source
@option options [required, String, Pathname, File, Tempfile] :source
The file to upload.
@option options [required, Integer] :offset The file part will read
starting at this byte offset.
@option options [required, Integer] :size The maximum number of bytes to
read from the `:offset`.
# File lib/aws-sdk-s3/file_part.rb, line 19 def initialize(options = {}) @source = options[:source] @first_byte = options[:offset] @last_byte = @first_byte + options[:size] @size = options[:size] @file = nil end
Public Instance Methods
close()
click to toggle source
# File lib/aws-sdk-s3/file_part.rb, line 52 def close @file.close if @file end
read(bytes = nil, output_buffer = nil)
click to toggle source
# File lib/aws-sdk-s3/file_part.rb, line 39 def read(bytes = nil, output_buffer = nil) open_file unless @file read_from_file(bytes, output_buffer) end
rewind()
click to toggle source
# File lib/aws-sdk-s3/file_part.rb, line 44 def rewind if @file @file.seek(@first_byte) @position = @first_byte end 0 end
Private Instance Methods
open_file()
click to toggle source
# File lib/aws-sdk-s3/file_part.rb, line 58 def open_file @file = File.open(@source, 'rb') rewind end
read_from_file(bytes, output_buffer)
click to toggle source
# File lib/aws-sdk-s3/file_part.rb, line 63 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
remaining_bytes()
click to toggle source
# File lib/aws-sdk-s3/file_part.rb, line 72 def remaining_bytes @last_byte - @position end