Example #1
0
 public async Task AddCandleAsync(CandlesModel candles, CancellationToken cancellationToken = default)
 {
     try
     {
         var tasks = candles.CandleCollection.Select(r => _distributedCache.SetStringAsync($"{_PREFIX}:{candles.CurrencyName}:{candles.TimeFrame}:{r.ReceiptTime}", JsonConvert.SerializeObject(r)));
         await Task.WhenAll(tasks);
     }
     catch (Exception ex)
     {
         _logger.LogError(ex, $"При добавление свечей в cache возникла ошибка");
     }
 }
Example #2
0
        public async Task ReceiveAndPublishCandleAsync(string pairName, int frame)
        {
            try
            {
                var bitfinexCandles = (await _candlesHistory.GetCandleHistoryAsync(pairName, frame)).ToList();
                var candlesModel    = new CandlesModel
                {
                    CurrencyName     = pairName,
                    TimeFrame        = frame,
                    CandleCollection = _mapper.Map <IList <CandleModel> >(bitfinexCandles)
                };

                await _publisher.PublishAsync($"candle", candlesModel, BusMessageType.Candles);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "В процессе получения и публикации свечи произошла ошибка");
            }
        }
Example #3
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var data   = JArray.Load(reader);
            var result = new CandlesModel();

            if (data.Count >= 2)
            {
                result.ChannelId        = (int)data[0];
                result.CandleCollection = new List <CandleModel>();
                if (((JArray)data[1]).Count > 6)
                {
                    result.CandleCollection = data[1].Select(r => CreateCandle((JArray)r))
                                              .ToList();
                }
                else
                {
                    result.CandleCollection = new CandleModel[] { CreateCandle((JArray)data[1]) };
                    result.StockTime        = DateTime.UnixEpoch.AddMilliseconds((long)data[2]);
                }
            }
            return(result);
        }