/// <inheritdoc /> public async Task <ObjectResult <IEnumerable <SelectorAndContentHashListWithCacheMetadata> > > GetSelectorsAsync( Context context, string cacheNamespace, Fingerprint weakFingerprint, int maxSelectorsToFetch) { try { var selectorsResponse = await ArtifactHttpClientErrorDetectionStrategy.ExecuteWithTimeoutAsync( context, "GetSelectors", innerCts => _buildCacheHttpClient.GetSelectors( cacheNamespace, weakFingerprint, maxSelectorsToFetch), CancellationToken.None); var selectorsToReturn = new List <SelectorAndContentHashListWithCacheMetadata>(); foreach ( SelectorAndPossibleContentHashListResponse selectorAndPossible in selectorsResponse.SelectorsAndPossibleContentHashLists ) { if (selectorAndPossible.ContentHashList != null) { DownloadUriCache.Instance.BulkAddDownloadUris(selectorAndPossible.ContentHashList.BlobDownloadUris); } selectorsToReturn.Add( new SelectorAndContentHashListWithCacheMetadata( selectorAndPossible.Selector, selectorAndPossible.ContentHashList?.ContentHashListWithCacheMetadata)); } return(new ObjectResult <IEnumerable <SelectorAndContentHashListWithCacheMetadata> >(selectorsToReturn)); } catch (Exception ex) { return(new ObjectResult <IEnumerable <SelectorAndContentHashListWithCacheMetadata> >(ex)); } }