Exemplo n.º 1
0
        /// <summary>
        /// Asks the user about deleting bucket objects, and starts async tasks to do so.
        /// </summary>
        private List <Task <string> > AskDeleteObjects(StorageService service)
        {
            List <Task <string> > deleteTasks = new List <Task <string> >();
            bool yesAll = false;
            bool noAll  = false;

            ObjectsResource.ListRequest request = service.Objects.List(Name);
            do
            {
                Objects bucketObjects = request.Execute();
                string  caption       = $"Deleting {bucketObjects.Items.Count} bucket objects";
                if (bucketObjects.NextPageToken != null)
                {
                    caption = $"Deleting more than {bucketObjects.Items.Count} bucket objects";
                }
                foreach (var bucketObject in bucketObjects.Items)
                {
                    string query = $"Delete bucket object {bucketObject.Name}?";
                    if (Force || ShouldContinue(query, caption, ref yesAll, ref noAll))
                    {
                        deleteTasks.Add(service.Objects.Delete(Name, bucketObject.Name).ExecuteAsync());
                    }
                }
                request.PageToken = bucketObjects.NextPageToken;
            } while (request.PageToken != null && !noAll && !Stopping);

            return(deleteTasks);
        }
Exemplo n.º 2
0
        private void DeleteObjects(GcsPath gcsPath)
        {
            string bucketName = gcsPath.Bucket;
            List <Task <string> > deleteTasks = new List <Task <string> >();

            ObjectsResource.ListRequest request = Service.Objects.List(bucketName);
            do
            {
                Objects gcsObjects = request.Execute();
                foreach (Object gcsObject in gcsObjects.Items ?? Enumerable.Empty <Object>())
                {
                    deleteTasks.Add(Service.Objects.Delete(bucketName, gcsObject.Name).ExecuteAsync());
                }
                request.PageToken = gcsObjects.NextPageToken;
            } while (request.PageToken != null && !Stopping);
            WaitDeleteTasks(deleteTasks);
        }
Exemplo n.º 3
0
 public bool HasChildren(string objectName)
 {
     if (string.IsNullOrEmpty(objectName))
     {
         return(_objectMap.Count > 0);
     }
     else if (_pageLimited && !_prefixes.ContainsKey(objectName))
     {
         ObjectsResource.ListRequest request = _service.Objects.List(_bucket);
         request.Prefix = objectName;
         Objects response = request.Execute();
         return(response.Items != null && response.Items.Count > 0);
     }
     else
     {
         return(_prefixes.ContainsKey(objectName) && _prefixes[objectName]);
     }
 }
Exemplo n.º 4
0
        public bool ExistsDirectory(string directoryName)
        {
            directoryName = StorageUtils.NormalizeDirectoryName(directoryName);
            bool exists = false;

            ObjectsResource.ListRequest request = Service.Objects.List(Bucket);
            request.Delimiter = StorageUtils.DELIMITER;
            Google.Apis.Storage.v1.Data.Objects response;
            do
            {
                response = request.Execute();
                if (response.Prefixes != null && response.Prefixes.Contains(directoryName))
                {
                    exists = true;
                }
            } while (response.NextPageToken != null);
            return(exists);
        }
Exemplo n.º 5
0
 /// <summary>
 /// Checks to see if the given object is a folder.
 /// </summary>
 /// <param name="objectName">The name of the object to check.</param>
 /// <returns>True if the object name is an existant object that ends with "/", or is a prefix for other
 /// existant objects.</returns>
 public bool IsContainer(string objectName)
 {
     if (_prefixes.ContainsKey(objectName.TrimEnd(Separator)))
     {
         return(true);
     }
     else if (_pageLimited)
     {
         ObjectsResource.ListRequest request = _service.Objects.List(_bucket);
         request.Prefix    = objectName;
         request.Delimiter = SeparatorString;
         Objects response = request.Execute();
         return(response.Prefixes != null && response.Prefixes.Count > 0);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 6
0
        public List <string> GetFilesList()
        {
            var newObject = new Google.Apis.Storage.v1.Data.Object()
            {
                Bucket = BucketToUpload,
            };
            List <string> resultStatus = null;

            try
            {
                var listRequest = new ObjectsResource.ListRequest(StorageService,
                                                                  BucketToUpload);
                listRequest.OauthToken = UserCredential.Token.AccessToken;
                resultStatus           = listRequest.Execute().Items.Select(x => x.Name).ToList();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            return(resultStatus);
        }
Exemplo n.º 7
0
        public List <string> GetSubDirectories(string directoryName)
        {
            directoryName = StorageUtils.NormalizeDirectoryName(directoryName);
            List <string> subDirs = new List <string>();

            ObjectsResource.ListRequest request = Service.Objects.List(Bucket);
            request.Prefix    = directoryName;
            request.Delimiter = StorageUtils.DELIMITER;
            Google.Apis.Storage.v1.Data.Objects response;
            do
            {
                response = request.Execute();
                if (response.Prefixes == null)
                {
                    continue;
                }
                foreach (string dir in response.Prefixes)
                {
                    subDirs.Add(dir);
                }
                request.PageToken = response.NextPageToken;
            } while (response.NextPageToken != null);
            return(subDirs);
        }