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 }); }
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); }