Пример #1
0
        /// <summary>
        /// Zaif Streaming APIを呼び出します。
        /// </summary>
        /// <param name="cp">パラメーター。</param>
        /// <param name="callback">コールバック。</param>
        /// <returns>レスポンスとして返されるJSON形式の文字列。</returns>
        public async Task StartStream(CurrencyPairsEnum cp, Action <StreamingData> callback, CancellationToken token)
        {
            double nonce = (DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;

            if (Client.State != WebSocketState.Open)
            {
                await Client.ConnectAsync(new Uri(path + cp.ToString()), token).ConfigureAwait(false);

                var tmpStr = "";

                while (Client.State == WebSocketState.Open)
                {
                    var buff = new ArraySegment <byte>(new byte[MessageBufferSize]);
                    var ret  = await Client.ReceiveAsync(buff, token).ConfigureAwait(false);

                    tmpStr += (new UTF8Encoding()).GetString(buff.Take(ret.Count).ToArray());
                    var index = tmpStr.IndexOf("}{");
                    if (index >= 0)
                    {
                        var json = tmpStr.Substring(0, index + 1);
                        tmpStr = tmpStr.Remove(0, index + 1);
                        var result = JsonConvert.DeserializeObject <StreamingData>(json);
                        callback(result);
                    }
                }
            }
        }
Пример #2
0
        public async Task <Depth> Depth(CurrencyPairsEnum cp)
        {
            var json = await SendGetAsync("/depth/" + cp.ToString()).ConfigureAwait(false);

            var result = JsonConvert.DeserializeObject <Depth>(json);

            return(result);
        }
Пример #3
0
        public async Task <IEnumerable <PublicTrade> > Trades(CurrencyPairsEnum cp)
        {
            var json = await SendGetAsync("/trades/" + cp.ToString()).ConfigureAwait(false);

            var result = JsonConvert.DeserializeObject <IEnumerable <PublicTrade> >(json);

            return(result);
        }
Пример #4
0
        public async Task <LastPrice> LastPrice(CurrencyPairsEnum cp)
        {
            var json = await SendGetAsync("/last_price/" + cp.ToString()).ConfigureAwait(false);

            var result = JsonConvert.DeserializeObject <LastPrice>(json);

            return(result);
        }
Пример #5
0
        public async Task <Ticker> Ticker(string groupId, CurrencyPairsEnum cp)
        {
            string endpoint = "/ticker/" + groupId + "/" + cp.ToString();

            var json = await SendGetAsync(endpoint).ConfigureAwait(false);

            var result = JsonConvert.DeserializeObject <Ticker>(json);

            return(result);
        }
Пример #6
0
        public async Task <IEnumerable <PublicTrade> > Trades(string groupId, CurrencyPairsEnum cp)
        {
            string endpoint = "/trades/" + groupId + "/" + cp.ToString();

            var json = await SendGetAsync(endpoint).ConfigureAwait(false);

            var result = JsonConvert.DeserializeObject <IEnumerable <PublicTrade> >(json);

            return(result);
        }
Пример #7
0
        public async Task <LastPrice> LastPrice(string groupId = "all", CurrencyPairsEnum cp = CurrencyPairsEnum.None)
        {
            string endpoint;

            if (cp == CurrencyPairsEnum.None)
            {
                endpoint = "/last_price/" + groupId;
            }
            else
            {
                endpoint = "/last_price/" + groupId + "/" + cp.ToString();
            }

            var json = await SendGetAsync(endpoint).ConfigureAwait(false);

            var result = JsonConvert.DeserializeObject <LastPrice>(json);

            return(result);
        }