/// <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); }
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); }
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]); } }
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); }
/// <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); } }
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); }
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); }