Class: AssetCloud::S3Bucket
- Inherits:
-
Bucket
- Object
- Bucket
- AssetCloud::S3Bucket
show all
- Defined in:
- lib/asset_cloud/buckets/s3_bucket.rb
Instance Attribute Summary
Attributes inherited from Bucket
#cloud, #name
Instance Method Summary
collapse
Methods inherited from Bucket
#initialize, #versioned?
Instance Method Details
#delete(key) ⇒ Object
46
47
48
49
50
|
# File 'lib/asset_cloud/buckets/s3_bucket.rb', line 46
def delete(key)
object = cloud.s3_bucket(key).object(absolute_key(key))
object.delete
true
end
|
#ls(key = nil) ⇒ Object
7
8
9
10
11
12
13
14
15
|
# File 'lib/asset_cloud/buckets/s3_bucket.rb', line 7
def ls(key = nil)
key = absolute_key(key)
options = {}
options[:prefix] = key if key
objects = cloud.s3_bucket(key).objects(options)
objects.map { |o| cloud[relative_key(o.key)] }
end
|
#read(key, options = {}) ⇒ Object
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/asset_cloud/buckets/s3_bucket.rb', line 17
def read(key, options = {})
options = options.dup
options[:range] = http_byte_range(options[:range]) if options[:range]
bucket = cloud.s3_bucket(key)
if (encryption_key = options.delete(:encryption_key))
bucket = encrypted_bucket(bucket, encryption_key)
end
object = bucket.object(absolute_key(key)).get(options)
object.body.respond_to?(:read) ? object.body.read : object.body
rescue ::Aws::Errors::ServiceError
raise AssetCloud::AssetNotFoundError, key
end
|
#stat(key) ⇒ Object
52
53
54
55
56
57
58
59
|
# File 'lib/asset_cloud/buckets/s3_bucket.rb', line 52
def stat(key)
bucket = cloud.s3_bucket(key)
metadata = bucket.client.head_object(bucket: bucket.name, key: absolute_key(key))
AssetCloud::Metadata.new(true, metadata[:content_length], nil, metadata[:last_modified])
rescue Aws::S3::Errors::NoSuchKey, Aws::S3::Errors::NotFound
AssetCloud::Metadata.new(false)
end
|
#write(key, data, options = {}) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/asset_cloud/buckets/s3_bucket.rb', line 34
def write(key, data, options = {})
options = options.dup
bucket = cloud.s3_bucket(key)
if (encryption_key = options.delete(:encryption_key))
bucket = encrypted_bucket(bucket, encryption_key)
end
object = bucket.object(absolute_key(key))
object.put(options.merge(body: data))
end
|