public async Task Generate()
        {
            var builder = new ContainerBuilder();
            var config  = new TwitterBotConfig();

            config.IsDev     = true;
            config.IsService = true;
            builder.RegisterModule(new LoggingModule(new NullLoggerFactory()));
            config.Build(builder);
            var container      = builder.Build();
            var chartGenerator = container.Resolve <IDayChartGenerator>(new TypedParameter(typeof(string), "Twitter"));
            var tracking       = container.ResolveKeyed <ISentimentTracking>("Twitter");
            var result         = await tracking.GetTrackingHistory(new SentimentRequest("$AMD", "$INTC", "$BTC", "$TSLA") { Hours = new[] { HoursExtension.GetLastDaysHours(5) } }, CancellationToken.None);

            var average1 = result["$TSLA"].GroupBy(item => item.Date.Date).Select(item => (item.Key, item.Where(y => y.Rating.HasValue).OrderBy(x => x.Date).Average(x => x.Rating.Value)));
            var average2 = result["$AMD"].GroupBy(item => item.Date.Date).Select(item => (item.Key, item.Where(y => y.Rating.HasValue).OrderBy(x => x.Date).Average(x => x.Rating.Value)));
            var average3 = result["$BTC"].GroupBy(item => item.Date.Date).Select(item => (item.Key, item.Where(y => y.Rating.HasValue).OrderBy(x => x.Date).Average(x => x.Rating.Value)));
            var average4 = result["$INTC"].GroupBy(item => item.Date.Date).Select(item => (item.Key, item.Where(y => y.Rating.HasValue).OrderBy(x => x.Date).Average(x => x.Rating.Value)));

            chartGenerator.AddSeriesByDay("AMD", result["$AMD"], 5);
            chartGenerator.AddSeriesByDay("$TSLA", result["$TSLA"], 5);
            chartGenerator.AddSeriesByDay("INTC", result["$INTC"], 5);
            chartGenerator.AddSeriesByDay("$BTC", result["$BTC"], 5);
            var chart = await chartGenerator.GenerateGraph().ConfigureAwait(false);

            await File.WriteAllBytesAsync(Path.Combine(TestContext.CurrentContext.TestDirectory, @"chart.jpg"), chart, CancellationToken.None).ConfigureAwait(false);
        }
Esempio n. 2
0
 public TwitterBotCommand(
     ILogger <TwitterBotCommand> log,
     TwitterBotConfig botConfig,
     IObservableTimer timerCreator,
     IMarketMonitor marketMonitor,
     ISentimentMonitor sentimentMonitor,
     IChartMonitor chartMonitor)
     : base(log)
 {
     this.log              = log ?? throw new ArgumentNullException(nameof(log));
     this.botConfig        = botConfig ?? throw new ArgumentNullException(nameof(botConfig));
     this.timerCreator     = timerCreator ?? throw new ArgumentNullException(nameof(timerCreator));
     this.marketMonitor    = marketMonitor ?? throw new ArgumentNullException(nameof(marketMonitor));
     this.sentimentMonitor = sentimentMonitor ?? throw new ArgumentNullException(nameof(sentimentMonitor));
     this.chartMonitor     = chartMonitor ?? throw new ArgumentNullException(nameof(chartMonitor));
 }