public static async Task <CapabilityDiscoveryResult> GetDiscoveryCapabilityResultAsync(string capability) { var cacheResult = await DiscoveryServiceCache.LoadAsync(); CapabilityDiscoveryResult discoveryCapabilityResult = null; if (cacheResult != null && cacheResult.DiscoveryInfoForServices.ContainsKey(capability)) { discoveryCapabilityResult = cacheResult.DiscoveryInfoForServices[capability]; if (LoggedInUser != cacheResult.UserId) { // cache is for another user cacheResult = null; } } //Cache might exist from previous calls, but it might not include newly added capabilities. else if (cacheResult != null && !cacheResult.DiscoveryInfoForServices.ContainsKey(capability)) { cacheResult = null; cacheResult = await CreateAndSaveDiscoveryServiceCacheAsync(); discoveryCapabilityResult = cacheResult.DiscoveryInfoForServices[capability]; } if (cacheResult == null) { cacheResult = await CreateAndSaveDiscoveryServiceCacheAsync(); discoveryCapabilityResult = cacheResult.DiscoveryInfoForServices[capability]; } return(discoveryCapabilityResult); }
public static async Task <CapabilityDiscoveryResult> GetDiscoveryCapabilityResultAsync(string capability) { var cacheResult = await DiscoveryServiceCache.LoadAsync(); CapabilityDiscoveryResult discoveryCapabilityResult = null; if (cacheResult != null && cacheResult.DiscoveryInfoForServices.ContainsKey(capability)) { discoveryCapabilityResult = cacheResult.DiscoveryInfoForServices[capability]; if (LoggedInUser != cacheResult.UserId) { // cache is for another user cacheResult = null; } } if (cacheResult == null) { cacheResult = await CreateAndSaveDiscoveryServiceCacheAsync(); discoveryCapabilityResult = cacheResult.DiscoveryInfoForServices[capability]; } return(discoveryCapabilityResult); }
//Discovery service methods public static async Task <DiscoveryServiceCache> CreateAndSaveDiscoveryServiceCacheAsync() { DiscoveryServiceCache discoveryCache = null; var discoveryClient = new DiscoveryClient(DiscoveryServiceEndpointUri, async() => await GetTokenHelperAsync(_authenticationContext, DiscoveryResourceId)); var discoveryCapabilityResult = await discoveryClient.DiscoverCapabilitiesAsync(); discoveryCache = await DiscoveryServiceCache.CreateAndSaveAsync(LoggedInUser, discoveryCapabilityResult); return(discoveryCache); }