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
44
45
46
47
48
|
# File 'lib/asset_cloud/buckets/s3_bucket.rb', line 44
def delete(key)
object = cloud.s3_bucket(key).object(absolute_key(key))
object.delete
true
end
|
#ls(key = nil) ⇒ Object
5
6
7
8
9
10
11
12
13
|
# File 'lib/asset_cloud/buckets/s3_bucket.rb', line 5
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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/asset_cloud/buckets/s3_bucket.rb', line 15
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
50
51
52
53
54
55
56
57
|
# File 'lib/asset_cloud/buckets/s3_bucket.rb', line 50
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
32
33
34
35
36
37
38
39
40
41
42
|
# File 'lib/asset_cloud/buckets/s3_bucket.rb', line 32
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
|