/// <summary> /// List containers by container name prefix /// </summary> /// <param name="prefix">Container name prefix</param> /// <returns>An enumerable collection of cloudblobcontainer</returns> internal IEnumerable <Tuple <AzureStorageContainer, BlobContinuationToken> > ListContainersByPrefix(string prefix, Func <string, bool> containerFilter = null) { BlobServiceClient blobServiceClient = Util.GetTrack2BlobServiceClient(this.Channel.StorageContext, ClientOptions); BlobContainerTraits traits = BlobContainerTraits.Metadata; BlobContainerStates states = BlobContainerStates.None; if (this.IncludeDeleted.IsPresent) { states = BlobContainerStates.Deleted; } if (!string.IsNullOrEmpty(prefix) && !NameUtil.IsValidContainerPrefix(prefix)) { throw new ArgumentException(String.Format(Resources.InvalidContainerName, prefix)); } int listCount = InternalMaxCount; int MaxListCount = 5000; int requestCount = MaxListCount; int realListCount = 0; string continuationToken = this.ContinuationToken is null ? null : this.ContinuationToken.NextMarker; do { requestCount = Math.Min(listCount, MaxListCount); realListCount = 0; IEnumerator <Page <BlobContainerItem> > enumerator = blobServiceClient.GetBlobContainers(traits, states, prefix, this.CmdletCancellationToken) .AsPages(continuationToken, requestCount) .GetEnumerator(); Page <BlobContainerItem> page; enumerator.MoveNext(); page = enumerator.Current; foreach (BlobContainerItem item in page.Values) { if (containerFilter == null || containerFilter(item.Name)) { yield return(new Tuple <AzureStorageContainer, BlobContinuationToken>( new AzureStorageContainer(item, Channel.StorageContext, blobServiceClient), string.IsNullOrEmpty(page.ContinuationToken) ? null : new BlobContinuationToken() { NextMarker = page.ContinuationToken })); realListCount++; } realListCount++; } continuationToken = page.ContinuationToken; if (InternalMaxCount != int.MaxValue) { listCount -= realListCount; } }while (listCount > 0 && !string.IsNullOrEmpty(continuationToken)); }
public GetBlobContainersAsyncCollection( BlobServiceClient client, BlobContainerTraits traits, BlobContainerStates states, string prefix = default) { _client = client; _traits = traits; _states = states; _prefix = prefix; }
/// <summary> /// Convert the details into ListContainersIncludeType values. /// </summary> /// <returns>ListContainersIncludeType values</returns> internal static IEnumerable <ListContainersIncludeType> AsIncludeItems(BlobContainerTraits traits, BlobContainerStates states) { // Remove this line Debug.Assert(states == BlobContainerStates.None); var items = new List <ListContainersIncludeType>(); // Uncomment when feature is re-enabled. //if ((states & BlobContainerStates.Deleted) == BlobContainerStates.Deleted) //{ // items.Add(ListContainersIncludeType.Deleted); //} if ((traits & BlobContainerTraits.Metadata) == BlobContainerTraits.Metadata) { items.Add(ListContainersIncludeType.Metadata); } return(items.Count > 0 ? items : null); }
/// <summary> /// Convert the details into ListContainersIncludeType values. /// </summary> /// <returns>ListContainersIncludeType values</returns> internal static IEnumerable <ListContainersIncludeType> AsIncludeItems(BlobContainerTraits traits, BlobContainerStates states) { var items = new List <ListContainersIncludeType>(); if ((states & BlobContainerStates.Deleted) == BlobContainerStates.Deleted) { items.Add(ListContainersIncludeType.Deleted); } if ((traits & BlobContainerTraits.Metadata) == BlobContainerTraits.Metadata) { items.Add(ListContainersIncludeType.Metadata); } return(items.Count > 0 ? items : null); }