Exemple #1
0
        private void CreateBucket()
        {
            //objects in bucket are public by default
            ObjectAccessControl defaultAccess = new ObjectAccessControl();

            defaultAccess.Entity = "allUsers";
            defaultAccess.Role   = "READER";

            Bucket bucket = new Bucket();

            bucket.Name             = Bucket;
            bucket.DefaultObjectAcl = new List <ObjectAccessControl> {
                defaultAccess
            };

            try
            {
                Client.CreateBucket(Project, bucket);
            }
            catch (GoogleApiException ex)
            {
                if (ex.Error.Code != BUCKET_EXISTS)
                {
                    throw ex;
                }
            }
        }
        public static bool TryGetObjectAccessControl(this StoragePermissions permissions, StorageActor actor, out ObjectAccessControl ac)
        {
            if (permissions == StoragePermissions.None)
            {
                ac = null;
                return(false);
            }
            ac      = new ObjectAccessControl();
            ac.Role = permissions == StoragePermissions.Read ? "READER" : "OWNER";
            switch (actor.ActorType)
            {
            case StorageActorType.Authenticated:
                ac.Entity = "allAuthenticatedUsers";
                break;

            case StorageActorType.Public:
                ac.Entity = "allUsers";
                break;

            case StorageActorType.User:
                ac.Entity   = $"user-{actor.Id}";
                ac.EntityId = actor.Id;
                break;

            case StorageActorType.Group:
                ac.Entity   = $"group-{actor.Id}";
                ac.EntityId = actor.Id;
                break;

            default:
                ac = null;
                return(false);
            }
            return(true);
        }
 public static StoragePermissions GetStoragePermissions(this ObjectAccessControl ac)
 {
     if (StringComparer.OrdinalIgnoreCase.Equals("READER", ac.Role))
     {
         return(StoragePermissions.Read);
     }
     if (StringComparer.OrdinalIgnoreCase.Equals("OWNER", ac.Role))
     {
         return(StoragePermissions.Full);
     }
     return(StoragePermissions.None);
 }
Exemple #4
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();
            ObjectAccessControl defaultAcl = new ObjectAccessControl()
            {
                Role   = Role.ToUpper(),
                Entity = GetAclEntity(),
            };

            DefaultObjectAccessControlsResource.InsertRequest request = Service.DefaultObjectAccessControls.Insert(defaultAcl, Name);
            ObjectAccessControl response = request.Execute();

            WriteObject(response);
        }
Exemple #5
0
        /// <summary>
        /// Updates a default object ACL entry on the specified bucket.
        /// Documentation https://developers.google.com/storage/v1/reference/defaultObjectAccessControls/update
        /// Generation Note: This does not always build corectly.  Google needs to standardise things I need to figuer out which ones are wrong.
        /// </summary>
        /// <param name="service">Authenticated Storage service.</param>
        /// <param name="bucket">Name of a bucket.</param>
        /// <param name="entity">The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers.</param>
        /// <param name="body">A valid Storage v1 body.</param>
        /// <param name="optional">Optional paramaters.</param>
        /// <returns>ObjectAccessControlResponse</returns>
        public static ObjectAccessControl Update(StorageService service, string bucket, string entity, ObjectAccessControl body, DefaultObjectAccessControlsUpdateOptionalParms optional = null)
        {
            try
            {
                // Initial validation.
                if (service == null)
                {
                    throw new ArgumentNullException("service");
                }
                if (body == null)
                {
                    throw new ArgumentNullException("body");
                }
                if (bucket == null)
                {
                    throw new ArgumentNullException(bucket);
                }
                if (entity == null)
                {
                    throw new ArgumentNullException(entity);
                }

                // Building the initial request.
                var request = service.DefaultObjectAccessControls.Update(body, bucket, entity);

                // Applying optional parameters to the request.
                request = (DefaultObjectAccessControlsResource.UpdateRequest)SampleHelpers.ApplyOptionalParms(request, optional);

                // Requesting data.
                return(request.Execute());
            }
            catch (Exception ex)
            {
                throw new Exception("Request DefaultObjectAccessControls.Update failed.", ex);
            }
        }
        /// <summary>
        /// Updates a default object ACL entry on the specified bucket.
        /// Documentation https://developers.google.com/storage/v1/reference/defaultObjectAccessControls/update
        /// Generation Note: This does not always build corectly.  Google needs to standardise things I need to figuer out which ones are wrong.
        /// </summary>
        /// <param name="service">Authenticated storage service.</param>
        /// <param name="bucket">Name of a bucket.</param>
        /// <param name="entity">The entity holding the permission. Can be user-userId, user-emailAddress, group-groupId, group-emailAddress, allUsers, or allAuthenticatedUsers.</param>
        /// <param name="body">A valid storage v1 body.</param>
        /// <returns>ObjectAccessControlResponse</returns>
        public static ObjectAccessControl Update(storageService service, string bucket, string entity, ObjectAccessControl body)
        {
            try
            {
                // Initial validation.
                if (service == null)
                {
                    throw new ArgumentNullException("service");
                }
                if (body == null)
                {
                    throw new ArgumentNullException("body");
                }
                if (bucket == null)
                {
                    throw new ArgumentNullException(bucket);
                }
                if (entity == null)
                {
                    throw new ArgumentNullException(entity);
                }

                // Make the request.
                return(service.DefaultObjectAccessControls.Update(body, bucket, entity).Execute());
            }
            catch (Exception ex)
            {
                throw new Exception("Request DefaultObjectAccessControls.Update failed.", ex);
            }
        }
 /// <summary>
 /// Adjusts the ACL for an uploaded object so that a SQL instance can access it.
 /// </summary>
 public void AdjustAcl(Apis.Storage.v1.Data.Object bucketObject, string instanceEmail)
 {
     ObjectAccessControl body = new ObjectAccessControl();
     body.Bucket = bucketObject.Bucket;
     body.Entity = "user-" + instanceEmail;
     body.Role = "OWNER";
     body.Object__ = bucketObject.Name;
     ObjectAccessControlsResource.InsertRequest aclRequest =
         _bucketService.ObjectAccessControls.Insert(body, bucketObject.Bucket, bucketObject.Name);
     try
     {
         aclRequest.Execute();
     }
     catch (Exception e)
     {
         DeleteObject(bucketObject);
         _bucketService.Buckets.Delete(bucketObject.Bucket).Execute();
         throw e;
     }
 }
 protected override void ProcessRecord()
 {
     base.ProcessRecord();
     ObjectAccessControl objAcl = new ObjectAccessControl()
     {
         Role = Role.ToUpper(),
         Entity = GetAclEntity(),
     };
     ObjectAccessControlsResource.InsertRequest request = Service.ObjectAccessControls.Insert(objAcl, Bucket, ObjectName);
     ObjectAccessControl response = request.Execute();
     WriteObject(response);
 }