public void KeepFresh(IDataContext context, IAssetPairsProvider exchange, bool ignoreFreshState = false) { if (IsFresh(ignoreFreshState)) { return; } lock (Lock) { if (IsFresh(ignoreFreshState)) { return; } var r = ApiCoordinator.GetAssetPairs(exchange); if (r.IsFailed) { return; } AssetPairs = r.Response; AssetPairs.UtcLastUpdated = DateTime.UtcNow; Assets = AssetPairs.Select(x => x.Asset1).Union(AssetPairs.Select(x => x.Asset2)).OrderBy(x => x.ShortCode).ToUniqueList(); this.Save(context); } }
protected void GetAssetPairs(IAssetPairsProvider provider, AssetPairs requiredPairs) { var ctx = new NetworkProviderContext(); try { var pairs = AsyncContext.Run(() => provider.GetAssetPairsAsync(ctx)); Assert.IsTrue(pairs != null); Assert.IsTrue(pairs.Count > 0); if (requiredPairs != null) { Trace.WriteLine("Checked pairs:"); foreach (var requiredPair in requiredPairs) { var contains = pairs.Contains(requiredPair); Assert.IsTrue(contains, $"Provider didn't return required {requiredPair} pair."); Trace.WriteLine(requiredPair); } } Trace.WriteLine("\nRemote pairs from exchange:"); foreach (var pair in pairs) { Trace.WriteLine(pair); } } catch (Exception e) { Assert.Fail(e.Message); } }
protected void GetAssetPairsTest(IAssetPairsProvider provider, AssetPairs requiredPairs) { var ctx = new NetworkProviderContext(); var pairs = AsyncContext.Run(() => provider.GetAssetPairsAsync(ctx)); Assert.True(pairs != null); Assert.True(pairs.Count > 0); if (requiredPairs != null) { OutputWriter.WriteLine("Checked pairs:"); foreach (var requiredPair in requiredPairs) { var contains = pairs.Contains(requiredPair); Assert.True(contains, $"Provider didn't return required {requiredPair} pair."); OutputWriter.WriteLine(requiredPair.ToString()); } } OutputWriter.WriteLine("\nRemote pairs from exchange:"); foreach (var pair in pairs) { OutputWriter.WriteLine(pair.ToString()); } }
public static Task <ApiResponse <AssetPairs> > GetAssetPairsAsync(IAssetPairsProvider provider, NetworkProviderContext context = null) { context = context ?? new NetworkProviderContext(); return(AssetPairCache.I.TryAsync(provider, () => ApiHelpers.WrapExceptionAsync(() => provider.GetAssetPairsAsync(context), nameof(GetAssetPairs), provider, context))); }
public static ApiResponse <AssetPairs> GetAssetPairs(IAssetPairsProvider provider, NetworkProviderContext context = null) { return(AsyncContext.Run(() => GetAssetPairsAsync(provider, context))); }