Exemplo n.º 1
0
        public void SubscribeToTickerUpdates_Should_TriggerWithTickerUpdate()
        {
            // arrange
            var socket = new TestSocket();

            socket.CanConnect = true;
            var client = TestHelpers.CreateSocketClient(socket);

            HuobiSymbolDatas result = null;
            var subTask             = client.SubscribeToSymbolTickerUpdatesAsync((test => result = test));

            socket.InvokeMessage($"{{\"subbed\": \"test\", \"id\": \"{BaseClient.LastId}\", \"status\": \"ok\"}}");
            var subResult = subTask.Result;

            var expected = new List <HuobiSymbolData>
            {
                new HuobiSymbolData()
                {
                    Amount     = 0.1m,
                    Close      = 0.2m,
                    Low        = 0.3m,
                    High       = 0.4m,
                    Volume     = 0.5m,
                    Open       = 0.6m,
                    TradeCount = 12
                }
            };

            // act
            socket.InvokeMessage(SerializeExpected("market.tickers", expected));

            // assert
            Assert.IsTrue(subResult.Success);
            Assert.IsTrue(TestHelpers.AreEqual(expected[0], result.Ticks.ToList()[0]));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Subscribes to updates for all tickers
        /// </summary>
        /// <param name="onData">The handler for updates</param>
        /// <returns></returns>
        public async Task <CallResult <UpdateSubscription> > SubscribeToSymbolTickerUpdatesAsync(Action <DataEvent <HuobiSymbolDatas> > onData)
        {
            var request         = new HuobiSubscribeRequest(NextId().ToString(CultureInfo.InvariantCulture), "market.tickers");
            var internalHandler = new Action <DataEvent <HuobiDataEvent <IEnumerable <HuobiSymbolTicker> > > >(data =>
            {
                var result = new HuobiSymbolDatas {
                    Timestamp = data.Timestamp, Ticks = data.Data.Data
                };
                onData(data.As(result));
            });

            return(await SubscribeAsync(request, null, false, internalHandler).ConfigureAwait(false));
        }