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); }
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)); }