示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        //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);
        }