private static async Task doJob(PayGramBotClient pClient) { var res = await pClient.GetExchangeRatesAsync(); if (res.Success) { foreach (var bc in res.Rates.Keys) { foreach (var qc in res.Rates[bc].Values) { var nq = new Quote() { BaseCurrency = bc, QuoteCurrency = qc.QuoteCurrency, Midpoint = qc.Price }; if (Currency.GetBySymbol(bc) == null || Currency.GetBySymbol(nq.QuoteCurrency) == null) { //log.Debug($"Basecurrency or quote currency could not be parsed {bc}:{nq.BaseCurrency}"); } else { //log.Debug($"{nq}/{qc}"); ConversionProviderFactory.CacheConversionProvider.UpdateCache(nq, qc.UpdatedUTC); } } } } }
public CurrenciesManager(PayGramBotClient pClient, ulong updateRatesEveryMillis = 0) { this.pClient = pClient; if (updateRatesEveryMillis != 0) { this.updateRatesEveryMillis = updateRatesEveryMillis; ConversionProviderFactory.QuotesValidForMillis = updateRatesEveryMillis * 2; // we have some time to update } else { this.updateRatesEveryMillis = ConversionProviderFactory.QuotesValidForMillis; ConversionProviderFactory.QuotesValidForMillis *= 2; // we don't know how ofter paygram updates the rates, let's choose a large value } ConversionProviderFactory.RegisterConversionProvider(new ToDefaultCurrencyConversionProvider(Currencies.BTC)); ConversionProviderFactory.RegisterConversionProvider(new ToDefaultCurrencyConversionProvider(Currencies.USD)); }