public async Task <AzureDevOpsIdentityDto> GetIdentityAsync(Uri collectionUri, Guid identityId) { // TODO: Consider using `GetManyAsync` var identity = await IdentitiesCache.GetOrAddAsync( identityId, () => GetIdentityFromApiAsync(collectionUri, identityId) ); return(identity); }
public async Task <AzureDevOpsIdentityDto[]> GetIdentitiesAsync(Uri collectionUri, Guid[] identityIds) { var cachedIdentities = await IdentitiesCache.GetManyAsync( identityIds ); var identities = cachedIdentities.Where(x => x.Value != null).Select(x => x.Value).ToList(); var missingIdentityIds = identityIds.Where(x => !identities.Any(i => i.Id == x)).ToArray(); if (missingIdentityIds.Any()) { var missingIdentities = await GetIdentitiesFromApiAsync(collectionUri, missingIdentityIds); var cacheItems = missingIdentities .Select(x => new KeyValuePair <Guid, AzureDevOpsIdentityDto>(x.Id, x)) .ToArray(); await IdentitiesCache.SetManyAsync(cacheItems); identities.AddRange(missingIdentities); } return(identities.ToArray()); }