Class: Gcloud::Storage::Bucket::DefaultAcl

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

Overview

Bucket Default Access Control List

Represents a Bucket’s Default Access Control List.

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

bucket.default_acl.readers.each { |reader| puts reader }

Constant Summary collapse

RULES =
{ "authenticatedRead" => "authenticatedRead",
"auth" => "authenticatedRead",
"auth_read" => "authenticatedRead",
"authenticated" => "authenticatedRead",
"authenticated_read" => "authenticatedRead",
"bucketOwnerFullControl" => "bucketOwnerFullControl",
"owner_full" => "bucketOwnerFullControl",
"bucketOwnerRead" => "bucketOwnerRead",
"owner_read" => "bucketOwnerRead",
"private" => "private",
"projectPrivate" => "projectPrivate",
"project_private" => "projectPrivate",
"publicRead" => "publicRead",
"public" => "publicRead",
"public_read" => "publicRead" }

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(bucket) ⇒ DefaultAcl

Initialized a new DefaultAcl object. Must provide a valid Bucket object.



528
529
530
531
532
533
534
# File 'lib/gcloud/storage/bucket/acl.rb', line 528

def initialize bucket #:nodoc:
  @bucket = bucket.name
  @connection = bucket.connection
  @owners  = nil
  @writers = nil
  @readers = nil
end

Class Method Details

.predefined_rule_for(rule_name) ⇒ Object

:nodoc:



838
839
840
# File 'lib/gcloud/storage/bucket/acl.rb', line 838

def self.predefined_rule_for rule_name #:nodoc:
  RULES[rule_name.to_s]
end

Instance Method Details

#add_owner(entity) ⇒ Object

Grants default owner permission to files in the bucket.

Parameters

entity

The entity holding the permission, in one of the following forms: (String)

  • user-userId

  • user-email

  • group-groupId

  • group-email

  • domain-domain

  • project-team-projectId

  • allUsers

  • allAuthenticatedUsers

Examples

Access to a bucket can be granted to a user by appending “user-” to the email address:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

email = "[email protected]"
bucket.default_acl.add_owner "user-#{email}"

Access to a bucket can be granted to a group by appending “group-” to the email address:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

email = "[email protected]"
bucket.default_acl.add_owner "group-#{email}"


674
675
676
677
678
679
680
681
682
# File 'lib/gcloud/storage/bucket/acl.rb', line 674

def add_owner entity
  resp = @connection.insert_default_acl @bucket, entity, "OWNER"
  if resp.success?
    entity = resp.data["entity"]
    @owners.push entity unless @owners.nil?
    return entity
  end
  nil
end

#add_reader(entity) ⇒ Object

Grants default reader permission to files in the bucket.

Parameters

entity

The entity holding the permission, in one of the following forms: (String)

  • user-userId

  • user-email

  • group-groupId

  • group-email

  • domain-domain

  • project-team-projectId

  • allUsers

  • allAuthenticatedUsers

Examples

Access to a bucket can be granted to a user by appending “user-” to the email address:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

email = "[email protected]"
bucket.default_acl.add_reader "user-#{email}"

Access to a bucket can be granted to a group by appending “group-” to the email address:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

email = "[email protected]"
bucket.default_acl.add_reader "group-#{email}"


786
787
788
789
790
791
792
793
794
# File 'lib/gcloud/storage/bucket/acl.rb', line 786

def add_reader entity
  resp = @connection.insert_default_acl @bucket, entity, "READER"
  if resp.success?
    entity = resp.data["entity"]
    @readers.push entity unless @readers.nil?
    return entity
  end
  nil
end

#add_writer(entity) ⇒ Object

Grants default writer permission to files in the bucket.

Parameters

entity

The entity holding the permission, in one of the following forms: (String)

  • user-userId

  • user-email

  • group-groupId

  • group-email

  • domain-domain

  • project-team-projectId

  • allUsers

  • allAuthenticatedUsers

Examples

Access to a bucket can be granted to a user by appending “user-” to the email address:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

email = "[email protected]"
bucket.default_acl.add_writer "user-#{email}"

Access to a bucket can be granted to a group by appending “group-” to the email address:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

email = "[email protected]"
bucket.default_acl.add_writer "group-#{email}"


730
731
732
733
734
735
736
737
738
# File 'lib/gcloud/storage/bucket/acl.rb', line 730

def add_writer entity
  resp = @connection.insert_default_acl @bucket, entity, "WRITER"
  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 default authenticatedRead predefined ACL rule to files in the bucket.

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

bucket.acl.auth!


859
860
861
# File 'lib/gcloud/storage/bucket/acl.rb', line 859

def auth!
  update_predefined_default_acl! "authenticatedRead"
end

#delete(entity) ⇒ Object

Permanently deletes the entity from the bucket’s default access control list for files.

Parameters

entity

The entity holding the permission, in one of the following forms: (String)

  • user-userId

  • user-email

  • group-groupId

  • group-email

  • domain-domain

  • project-team-projectId

  • allUsers

  • allAuthenticatedUsers

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

email = "[email protected]"
bucket.default_acl.delete "user-#{email}"


827
828
829
830
831
832
833
834
835
836
# File 'lib/gcloud/storage/bucket/acl.rb', line 827

def delete entity
  resp = @connection.delete_default_acl @bucket, entity
  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 default bucketOwnerFullControl predefined ACL rule to files in the bucket.

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

bucket.acl.owner_full!


882
883
884
# File 'lib/gcloud/storage/bucket/acl.rb', line 882

def owner_full!
  update_predefined_default_acl! "bucketOwnerFullControl"
end

#owner_read!Object Also known as: bucketOwnerRead!

Convenience method to apply the default bucketOwnerRead predefined ACL rule to files in the bucket.

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

bucket.acl.owner_read!


902
903
904
# File 'lib/gcloud/storage/bucket/acl.rb', line 902

def owner_read!
  update_predefined_default_acl! "bucketOwnerRead"
end

#ownersObject

Lists the default owners for files in the bucket.

Returns

Array of Strings

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

bucket.default_acl.owners.each { |owner| puts owner }


577
578
579
580
# File 'lib/gcloud/storage/bucket/acl.rb', line 577

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

#private!Object

Convenience method to apply the default private predefined ACL rule to files in the bucket.

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

bucket.acl.private!


922
923
924
# File 'lib/gcloud/storage/bucket/acl.rb', line 922

def private!
  update_predefined_default_acl! "private"
end

#project_private!Object Also known as: projectPrivate!

Convenience method to apply the default projectPrivate predefined ACL rule to files in the bucket.

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

bucket.acl.project_private!


941
942
943
# File 'lib/gcloud/storage/bucket/acl.rb', line 941

def project_private!
  update_predefined_default_acl! "projectPrivate"
end

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

Convenience method to apply the default publicRead predefined ACL rule to files in the bucket.

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

bucket.acl.public!


961
962
963
# File 'lib/gcloud/storage/bucket/acl.rb', line 961

def public!
  update_predefined_default_acl! "publicRead"
end

#readersObject

Lists the default readers for files in the bucket.

Returns

Array of Strings

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

bucket.default_acl.readers.each { |reader| puts reader }


623
624
625
626
# File 'lib/gcloud/storage/bucket/acl.rb', line 623

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

#reload!Object Also known as: refresh!

Reloads all Default Access Control List data for the bucket.

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

bucket.default_acl.reload!


550
551
552
553
554
555
556
# File 'lib/gcloud/storage/bucket/acl.rb', line 550

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

#writersObject

Lists the default writers for files in the bucket.

Returns

Array of Strings

Example

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage

bucket = storage.bucket "my-bucket"

bucket.default_acl.writers.each { |writer| puts writer }


600
601
602
603
# File 'lib/gcloud/storage/bucket/acl.rb', line 600

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