public Network NetworkConfirmedPricing(AssetPair pair) { var provs = Providers.OfList <IPublicPricingProvider>().OrderByVolume(pair).Where(x => x.IsDirect); var ctx = new PublicPriceContext(pair); Network net = null; foreach (var i in provs) { lock (_confirmedLock) if (_confirmed.Any(x => x.Item1 == i && Equals(x.Item2, pair))) { net = i.Network; break; } if (ApiCoordinator.GetPricing(i, ctx).IsNull) { continue; } net = i.Network; lock (_confirmedLock) _confirmed.Add(new Tuple <IPublicPricingProvider, AssetPair>(i, pair)); break; } return(net); }
private static MarketPricesData GrabPriceDataAndSave(KeyValuePair <Network, IReadOnlyList <AssetPair> > kv) { Console.WriteLine($"Getting price data for {kv.Key.Name} from {kv.Value.Count} pairs."); var prov = kv.Key.PublicPriceProviders.FirstDirectProvider <IPublicPricingProvider>(); if (prov == null) { Console.WriteLine($"No provider found for {kv.Key.Name}"); return(null); } var r = ApiCoordinator.GetPricing(prov, new PublicPricesContext(kv.Value.ToList())); if (r.IsNull) { Console.WriteLine($"No prices found for {kv.Key.Name}"); return(null); } var data = new MarketPricesData(kv.Key, r.Response.MarketPrices); data.SavePublic(); return(data); }