Class: Gcloud::Storage::File::Acl

Inherits:
Object
  • Object
show all
Defined in:
lib/gcloud/storage/file/acl.rb

Overview

File Access Control List

Represents a File's Access Control List.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
file.acl.readers.each { |reader| puts reader }

Instance Method Summary collapse

Instance Method Details

#add_owner(entity, generation: nil) ⇒ Object

Grants owner permission to the file.

Examples:

Grant access to a user by pre-pending "user-" to an email:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
email = "[email protected]"
file.acl.add_owner "user-#{email}"

Grant access to a group by pre-pending "group-" to an email

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
email = "[email protected]"
file.acl.add_owner "group-#{email}"

193
194
195
196
197
198
199
200
201
202
203
# File 'lib/gcloud/storage/file/acl.rb', line 193

def add_owner entity, generation: nil
  options = { generation: generation }
  resp = @connection.insert_file_acl @bucket, @file, entity,
                                     "OWNER", options
  if resp.success?
    entity = resp.data["entity"]
    @owners.push entity unless @owners.nil?
    return entity
  end
  nil
end

#add_reader(entity, generation: nil) ⇒ Object

Grants reader permission to the file.

Examples:

Grant access to a user by pre-pending "user-" to an email:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
email = "[email protected]"
file.acl.add_reader "user-#{email}"

Grant access to a group by pre-pending "group-" to an email

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
email = "[email protected]"
file.acl.add_reader "group-#{email}"

301
302
303
304
305
306
307
308
309
310
311
# File 'lib/gcloud/storage/file/acl.rb', line 301

def add_reader entity, generation: nil
  options = { generation: generation }
  resp = @connection.insert_file_acl @bucket, @file, entity,
                                     "READER", options
  if resp.success?
    entity = resp.data["entity"]
    @readers.push entity unless @readers.nil?
    return entity
  end
  nil
end

#add_writer(entity, generation: nil) ⇒ Object

Grants writer permission to the file.

Examples:

Grant access to a user by pre-pending "user-" to an email:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
email = "[email protected]"
file.acl.add_writer "user-#{email}"

Grant access to a group by pre-pending "group-" to an email

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
email = "[email protected]"
file.acl.add_writer "group-#{email}"

247
248
249
250
251
252
253
254
255
256
257
# File 'lib/gcloud/storage/file/acl.rb', line 247

def add_writer entity, generation: nil
  options = { generation: generation }
  resp = @connection.insert_file_acl @bucket, @file, entity,
                                     "WRITER", options
  if resp.success?
    entity = resp.data["entity"]
    @writers.push entity unless @writers.nil?
    return entity
  end
  nil
end

#auth!Object Also known as: authenticatedRead!, auth_read!, authenticated!, authenticated_read!

Convenience method to apply the authenticatedRead predefined ACL rule to the file.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
file.acl.auth!

377
378
379
# File 'lib/gcloud/storage/file/acl.rb', line 377

def auth!
  update_predefined_acl! "authenticatedRead"
end

#delete(entity, generation: nil) ⇒ Object

Permanently deletes the entity from the file's access control list.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
email = "[email protected]"
file.acl.delete "user-#{email}"

343
344
345
346
347
348
349
350
351
352
353
# File 'lib/gcloud/storage/file/acl.rb', line 343

def delete entity, generation: nil
  options = { generation: generation }
  resp = @connection.delete_file_acl @bucket, @file, entity, options
  if resp.success?
    @owners.delete entity  unless @owners.nil?
    @writers.delete entity unless @writers.nil?
    @readers.delete entity unless @readers.nil?
    return true
  end
  false
end

#owner_full!Object Also known as: bucketOwnerFullControl!

Convenience method to apply the bucketOwnerFullControl predefined ACL rule to the file.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
file.acl.owner_full!

400
401
402
# File 'lib/gcloud/storage/file/acl.rb', line 400

def owner_full!
  update_predefined_acl! "bucketOwnerFullControl"
end

#owner_read!Object Also known as: bucketOwnerRead!

Convenience method to apply the bucketOwnerRead predefined ACL rule to the file.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
file.acl.owner_read!

420
421
422
# File 'lib/gcloud/storage/file/acl.rb', line 420

def owner_read!
  update_predefined_acl! "bucketOwnerRead"
end

#ownersArray<String>

Lists the owners of the file.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
file.acl.owners.each { |owner| puts owner }

104
105
106
107
# File 'lib/gcloud/storage/file/acl.rb', line 104

def owners
  reload! if @owners.nil?
  @owners
end

#private!Object

Convenience method to apply the private predefined ACL rule to the file.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
file.acl.private!

440
441
442
# File 'lib/gcloud/storage/file/acl.rb', line 440

def private!
  update_predefined_acl! "private"
end

#project_private!Object Also known as: projectPrivate!

Convenience method to apply the projectPrivate predefined ACL rule to the file.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
file.acl.project_private!

459
460
461
# File 'lib/gcloud/storage/file/acl.rb', line 459

def project_private!
  update_predefined_acl! "projectPrivate"
end

#public!Object Also known as: publicRead!, public_read!

Convenience method to apply the publicRead predefined ACL rule to the file.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
file.acl.public!

479
480
481
# File 'lib/gcloud/storage/file/acl.rb', line 479

def public!
  update_predefined_acl! "publicRead"
end

#readersArray<String>

Lists the readers of the file.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
file.acl.readers.each { |reader| puts reader }

146
147
148
149
# File 'lib/gcloud/storage/file/acl.rb', line 146

def readers
  reload! if @readers.nil?
  @readers
end

#reload!Object Also known as: refresh!

Reloads all Access Control List data for the file.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
file.acl.reload!

79
80
81
82
83
84
85
# File 'lib/gcloud/storage/file/acl.rb', line 79

def reload!
  resp = @connection.list_file_acls @bucket, @file
  acls = resp.data["items"]
  @owners  = entities_from_acls acls, "OWNER"
  @writers = entities_from_acls acls, "WRITER"
  @readers = entities_from_acls acls, "READER"
end

#writersArray<String>

Lists the owners of the file.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

file = bucket.file "path/to/my-file.ext"
file.acl.writers.each { |writer| puts writer }

125
126
127
128
# File 'lib/gcloud/storage/file/acl.rb', line 125

def writers
  reload! if @writers.nil?
  @writers
end