Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        public CoinPriceService(CointreeHttpClient httpClient, IMemoryCache memoryCache)
        {
            CointreeHttpClient = httpClient;
            MemoryCache        = memoryCache;

            CacheExpiryOptions = new MemoryCacheEntryOptions
            {
                AbsoluteExpiration = DateTime.Now.AddSeconds(1)
            };
        }