private async Task <TreeViewModel> GetContainerBranch(string containerId) { var containerData = await _swiftService.GetContainer(containerId); TreeViewModel result = new TreeViewModel { text = containerId, containerId = containerId }; if (containerData.IsSuccess) { if (containerData.Objects != null && containerData.ObjectsCount > 0) { result.nodes = GetObjectBranch(containerId, "", containerData.Objects.Select(x => x.Object).ToList()).ToList(); if (result.nodes != null && result.nodes.Any()) { result.hasNodes = true; } } } return(result); }
public static async Task <SwiftBaseResponse> DeleteContainerContents(this ISwiftClient client, string containerId, int limit = 1000) { var limitHeaderKey = "limit"; var markerHeaderKey = "marker"; var queryParams = new Dictionary <string, string>() { { limitHeaderKey, limit.ToString() } }; var marker = string.Empty; while (true) { if (!string.IsNullOrEmpty(marker)) { if (queryParams.ContainsKey(markerHeaderKey)) { queryParams[markerHeaderKey] = marker; } else { queryParams.Add(markerHeaderKey, marker); } } // get objects var infoRsp = await client.GetContainer(containerId, null, queryParams).ConfigureAwait(false); // no more objects => break if (infoRsp.ObjectsCount == 0) { return(infoRsp); } if (infoRsp.IsSuccess && infoRsp.Objects != null) { var objectIds = infoRsp.Objects.Select(x => containerId + "/" + x.Object).ToList(); var count = infoRsp.Objects.Count; // delete them var deleteRsp = await client.DeleteObjects(objectIds).ConfigureAwait(false); if (!deleteRsp.IsSuccess) { return(deleteRsp); } // last page => break if (count < limit) { return(deleteRsp); } marker = infoRsp.Objects.Select(x => x.Object).LastOrDefault(); } else { return(infoRsp); } } }