Class: Fog::AWS::Storage::Directory

Inherits:
Model
  • Object
show all
Defined in:
lib/fog/aws/models/storage/directory.rb

Constant Summary collapse

VALID_ACLS =
['private', 'public-read', 'public-read-write', 'authenticated-read']

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#aclObject

Returns the value of attribute acl.



10
11
12
# File 'lib/fog/aws/models/storage/directory.rb', line 10

def acl
  @acl
end

Instance Method Details

#destroyObject



25
26
27
28
29
30
31
# File 'lib/fog/aws/models/storage/directory.rb', line 25

def destroy
  requires :key
  service.delete_bucket(key)
  true
rescue Excon::Errors::NotFound
  false
end

#destroy!(options = {}) ⇒ Object

Parameters:

  • options (Hash) (defaults to: {})

    (defaults to: {}) — a customizable set of options. Consider tuning this values for big buckets.

Options Hash (options):

  • timeout (Integer)

    — default: Fog.timeout — Maximum number of seconds to wait for the bucket to be empty.

  • interval (Proc|Integer)

    — default: Fog.interval — Seconds to wait before retrying to check if the bucket is empty.



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/fog/aws/models/storage/directory.rb', line 39

def destroy!(options = {})
  requires :key
  options = {
    timeout: Fog.timeout,
    interval: Fog.interval,
  }.merge(options)

  attempts = 0
  begin
    clear!
    Fog.wait_for(options[:timeout], options[:interval]) { objects_keys.size == 0 }
    service.delete_bucket(key)
    true
  rescue Excon::Errors::HTTPStatusError
    false
  end
end

#filesObject



66
67
68
# File 'lib/fog/aws/models/storage/directory.rb', line 66

def files
  @files ||= Fog::AWS::Storage::Files.new(:directory => self, :service => service)
end

#locationObject



57
58
59
# File 'lib/fog/aws/models/storage/directory.rb', line 57

def location
  @location ||= (bucket_location || Storage::DEFAULT_REGION)
end

#location=(new_location) ⇒ Object

NOTE: you can’t change the region once the bucket is created



62
63
64
# File 'lib/fog/aws/models/storage/directory.rb', line 62

def location=(new_location)
  @location = new_location
end

#payerObject



70
71
72
73
74
# File 'lib/fog/aws/models/storage/directory.rb', line 70

def payer
  requires :key
  data = service.get_request_payment(key)
  data.body['Payer']
end

#payer=(new_payer) ⇒ Object



76
77
78
79
80
# File 'lib/fog/aws/models/storage/directory.rb', line 76

def payer=(new_payer)
  requires :key
  service.put_request_payment(key, new_payer)
  @payer = new_payer
end

#persisted?Boolean

Returns:

  • (Boolean)


132
133
134
135
136
# File 'lib/fog/aws/models/storage/directory.rb', line 132

def persisted?
  # is_persisted is true in case of directories.get or after #save
  # creation_date is set in case of directories.all
  attributes[:is_persisted] || !!attributes[:creation_date]
end

#public=(new_public) ⇒ Object



97
98
99
100
# File 'lib/fog/aws/models/storage/directory.rb', line 97

def public=(new_public)
  self.acl = new_public ? 'public-read' : 'private'
  new_public
end

#public_urlObject



102
103
104
105
106
107
108
109
110
111
# File 'lib/fog/aws/models/storage/directory.rb', line 102

def public_url
  requires :key
  if service.get_bucket_acl(key).body['AccessControlList'].find {|grant| grant['Grantee']['URI'] == 'http://acs.amazonaws.com/groups/global/AllUsers' && grant['Permission'] == 'READ'}
    service.request_url(
      :bucket_name => key
    )
  else
    nil
  end
end

#saveObject



113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'lib/fog/aws/models/storage/directory.rb', line 113

def save
  requires :key

  options = {}

  options['x-amz-acl'] = acl if acl

  # http://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUT.html
  # Ignore the default region us-east-1
  if !persisted? && location != DEFAULT_REGION
    options['LocationConstraint'] = location
  end

  service.put_bucket(key, options)
  attributes[:is_persisted] = true

  true
end

#versioning=(new_versioning) ⇒ Object



88
89
90
91
# File 'lib/fog/aws/models/storage/directory.rb', line 88

def versioning=(new_versioning)
  requires :key
  service.put_bucket_versioning(key, new_versioning ? 'Enabled' : 'Suspended')
end

#versioning?Boolean

Returns:

  • (Boolean)


82
83
84
85
86
# File 'lib/fog/aws/models/storage/directory.rb', line 82

def versioning?
  requires :key
  data = service.get_bucket_versioning(key)
  data.body['VersioningConfiguration']['Status'] == 'Enabled'
end

#versionsObject



93
94
95
# File 'lib/fog/aws/models/storage/directory.rb', line 93

def versions
  @versions ||= Fog::AWS::Storage::Versions.new(:directory => self, :service => service)
end