Esempio n. 1
0
        private void FlushHuobiPrice(string key, string full, string address)
        {
            try
            {
                // get coin price from huobi
                var priceUrl = $"https://api.huobi.pro/market/trade?symbol={key}usdt";
                var request  = (HttpWebRequest)WebRequest.Create(priceUrl);

                request.Method      = "GET";
                request.Accept      = "*/*";
                request.ContentType = "application/json";
                request.Timeout     = 2000;

                int times = AoteNiuConst.HTTP_REQUEST_TRY_TIMES;
                while (times-- >= 0)
                {
                    try
                    {
                        var rsp = (HttpWebResponse)request.GetResponse();
                        if (rsp.StatusCode != HttpStatusCode.OK)
                        {
                            _log.Error($"FlushHuobiPrice rsp.StatusCode != HttpStatusCode.OK");
                            return;
                        }

                        HuobiPriceModel price_data;
                        using (var reader = new StreamReader(rsp.GetResponseStream()))
                        {
                            price_data = JsonConvert.DeserializeObject <HuobiPriceModel>(reader.ReadToEnd()) as HuobiPriceModel;
                            if (null == price_data)
                            {
                                _log.Error($"FlushHuobiPrice price_data null");
                                return;
                            }
                        }

                        if (null == price_data.tick.data)
                        {
                            _log.Error($"FlushHuobiPrice price_data.data null");
                            return;
                        }

                        decimal price = price_data.tick.data[0].price;

                        var pr = _coinPriceService.GetBySymbol(key, AoteNiuConst.HUOBI);
                        if (null == pr)
                        {
                            pr = new CoinPrice
                            {
                                address   = address,
                                platform  = AoteNiuConst.HUOBI,
                                symbol    = key,
                                full      = full,
                                price_usd = price,
                                price     = price * _PriceCNY,
                                ctime     = DateTime.Now
                            };
                        }
                        else
                        {
                            pr.price     = price * _PriceCNY;
                            pr.price_usd = price;
                        }

                        _coinPriceService.Update(pr);
                    }
                    catch (WebException ex)
                    {
                        _log.Error(ex.ToString());
                        Thread.Sleep(1000);
                        continue;
                    }

                    break;
                }

                if (times < 0)
                {
                    _log.Error($"FlushHuobiPrice: {key} failed !!!");
                    return;
                }
            }
            catch (Exception ex)
            {
                _log.Error(ex.ToString());
                return;
            }
        }