public async Task <GetApiProductSubscriptionsQueryResult> Handle(GetApiProductSubscriptionsQuery request, CancellationToken cancellationToken)
        {
            var productsTask =
                _apimApiService.GetAvailableProducts(request.AccountType);

            var subscriptionsTask =
                _apimDeveloperApiClient.Get <GetApiProductSubscriptionsResponse>(
                    new GetApiProductSubscriptionsRequest(request.AccountIdentifier));

            await Task.WhenAll(productsTask, subscriptionsTask);

            return(new GetApiProductSubscriptionsQueryResult
            {
                Products = productsTask.Result.Products,
                Subscriptions = subscriptionsTask.Result.Subscriptions
            });
        }
Esempio n. 2
0
        public async Task <GetAvailableApiProductsResponse> GetAvailableProducts(string accountType)
        {
            var cachedProducts = await _cacheStorageService.RetrieveFromCache <GetAvailableApiProductsResponse>($"{accountType}-{nameof(GetAvailableApiProductsResponse)}");

            if (cachedProducts != null)
            {
                return(cachedProducts);
            }

            var products =
                await _apimDeveloperApiClient.Get <GetAvailableApiProductsResponse>(
                    new GetAvailableApiProductsRequest(accountType));

            await _cacheStorageService.SaveToCache($"{accountType}-{nameof(GetAvailableApiProductsResponse)}", products,
                                                   CachedProductExpiryTimeInHours);

            return(products);
        }