public TwitterMonitorCommand(ILogger <TwitterMonitorCommand> log, TwitterMonitorConfig config, IMonitoringStream monitoring, IPersistency persistency)
 {
     this.log         = log ?? throw new ArgumentNullException(nameof(log));
     this.monitoring  = monitoring ?? throw new ArgumentNullException(nameof(monitoring));
     this.config      = config;
     this.persistency = persistency;
 }
 private void Stop()
 {
     logger.LogInformation("Stopping stream...");
     subscription?.Dispose();
     subscription = null;
     stream?.Dispose();
     stream = null;
 }
 public StreamMonitor(ILogger <StreamMonitor> logger,
                      IAuthentication authentication,
                      ITrackingInstance tracker,
                      IDuplicateDetectors duplicateDetectors,
                      IMonitoringStream stream)
 {
     this.authentication     = authentication ?? throw new ArgumentNullException(nameof(authentication));
     this.logger             = logger ?? throw new ArgumentNullException(nameof(logger));
     this.duplicateDetectors = duplicateDetectors ?? throw new ArgumentNullException(nameof(duplicateDetectors));
     Trackers    = tracker ?? throw new ArgumentNullException(nameof(tracker));
     this.stream = stream ?? throw new ArgumentNullException(nameof(stream));
     Start();
 }