Exemple #1
0
        private async Task LoadSymbolsData()
        {
            try
            {
                var    client   = new HttpClient();
                string url      = ENDPOINT_URI + ENDPOINT_SYMBOLS_PRICES;
                var    response = await client.GetAsync(url);

                if (!response.IsSuccessStatusCode)
                {
                    Logger.Instance.LogMessage(TracingLevel.ERROR, $"Could not fetch Symbols Data! Status Code: {response.StatusCode} Message: {response.ReasonPhrase}");
                    return;
                }

                string body = await response.Content.ReadAsStringAsync();

                JArray jarr = JArray.Parse(body);
                latestSymbols = jarr.ToObject <List <CryptoSymbolData> >();
                lastRefresh   = DateTime.Now;
                CryptoCurrencyUpdated?.Invoke(this, new CryptoCurrencyUpdatedEventArgs(latestSymbols));
            }
            catch (Exception ex)
            {
                Logger.Instance.LogMessage(TracingLevel.ERROR, $"Error fetching Symbols Data: {ex}");
            }
        }
Exemple #2
0
        public async void GetLatestSymbols()
        {
            await refreshLock.WaitAsync();

            try
            {
                if (latestSymbols == null || (DateTime.Now - lastRefresh).TotalSeconds > 2 * REFRESH_SYMBOLS_SECONDS)
                {
                    await LoadSymbolsData();
                }
                else
                {
                    CryptoCurrencyUpdated?.Invoke(this, new CryptoCurrencyUpdatedEventArgs(latestSymbols));
                }
            }
            finally
            {
                refreshLock.Release();
            }
        }