Class: S3::Object

Inherits:
Driver::Model
  • Object
show all
Defined in:
lib/s3/client/model/object.rb

Instance Method Summary collapse

Constructor Details

#initialize(api, bucket_name, object_name, opts = {}) ⇒ Object

Returns a new instance of Object.



3
4
5
6
7
8
# File 'lib/s3/client/model/object.rb', line 3

def initialize(api, bucket_name, object_name, opts = {})
  super(api)
  @bucket = bucket_name
  @name = object_name
  @opts = opts
end

Instance Method Details

#deleteObject



52
53
54
# File 'lib/s3/client/model/object.rb', line 52

def delete
  @api.delete_object(@bucket, @name)
end

#etagObject



18
19
20
# File 'lib/s3/client/model/object.rb', line 18

def etag
  @opts["ETag"][0]
end

#lastmodifiedObject



22
23
24
# File 'lib/s3/client/model/object.rb', line 22

def lastmodified
  Time.parse(@opts["LastModified"][0])
end

#nameObject



10
11
12
# File 'lib/s3/client/model/object.rb', line 10

def name
  @name
end

#read(range = nil) ⇒ Object



26
27
28
# File 'lib/s3/client/model/object.rb', line 26

def read(range = nil)
  @api.get_object(@bucket, @name, range)
end

#sizeObject



14
15
16
# File 'lib/s3/client/model/object.rb', line 14

def size
  @opts["Size"][0].to_i
end

#write(data, options = {}) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/s3/client/model/object.rb', line 30

def write(data, options = {})
  if data.is_a?(String)
    data = StringIO.new(data)
  elsif data.is_a?(Pathname)
    data = File.open(data, 'rb')
  elsif data.respond_to?(:read) && data.respond_to?(:eof?)
  end

  unless options[:multipart]
    @api.create_object(@bucket, @name, options) do
      data
    end
  else
    @api.create_multipart_object(@bucket, @name, options) do
      data
    end
  end
  data.close

  nil
end