public async Task <Result <CointreePriceResponse> > GetCoinDataAsync(string coin) { try { bool exists = MemoryCache.TryGetValue(coin, out CointreePriceResponse coinData); if (!exists) { coinData = await CointreeHttpClient.GetCointreeCoinData(coin); MemoryCache.Set(coin, coinData, CacheExpiryOptions); } return(Result <CointreePriceResponse> .Success(coinData)); } catch (HttpRequestException) { return(Result <CointreePriceResponse> .Failed(FaultCode.ErrorRetrievingCoinPrice)); } catch (JsonException) { return(Result <CointreePriceResponse> .Failed(FaultCode.FailedToReadResponseData)); } catch { return(Result <CointreePriceResponse> .Failed(FaultCode.Fail)); } }
public CoinPriceService(CointreeHttpClient httpClient, IMemoryCache memoryCache) { CointreeHttpClient = httpClient; MemoryCache = memoryCache; CacheExpiryOptions = new MemoryCacheEntryOptions { AbsoluteExpiration = DateTime.Now.AddSeconds(1) }; }