Class: S3Stream::Upload

Inherits:
Object
  • Object
show all
Defined in:
lib/s3stream/upload.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ Upload

Returns a new instance of Upload.



22
23
24
25
26
27
# File 'lib/s3stream/upload.rb', line 22

def initialize(args={})
  @s3object = args[:s3object] || raise("Missing :s3object")
  @log = args[:log_to] # optional
  reset
  @upload = @s3object.multipart_upload
end

Instance Attribute Details

#sizeObject (readonly)

Returns the value of attribute size.



20
21
22
# File 'lib/s3stream/upload.rb', line 20

def size
  @size
end

Class Method Details

.to(args = {}) ⇒ Object

S3Stream::Upload.to(:s3object => s3object, :log_to => $stdout) do |out|

out.write("abc")
out.write("123")

end



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/s3stream/upload.rb', line 8

def self.to(args={})
  stream = new(args)
  begin
    yield stream
    stream.close
  rescue => e
    stream.cancel
    raise
  end
  stream.size
end

Instance Method Details

#cancelObject



42
43
44
45
46
# File 'lib/s3stream/upload.rb', line 42

def cancel
  @upload.abort unless @upload.nil?
  reset
  log "Canceled upload to #{location}."
end

#closeObject



35
36
37
38
39
40
# File 'lib/s3stream/upload.rb', line 35

def close
  flush if @buffer.size > 0
  unless @upload.close.nil?
    log "Done uploading #{size} bytes to #{location}."
  end
end

#write(data) ⇒ Object



29
30
31
32
33
# File 'lib/s3stream/upload.rb', line 29

def write(data)
  @buffer << data
  flush if @chunk < S3Stream::MAX_CHUNKS && @buffer.size >= @buffer_size
  @size += data.size
end