public static void Dispatch(Tweet tweet, ITweetHandler handler) { if (tweet.IsRetweet) { return; } if (tweet.AuthorFollowers < 10) { return; // attempt to cut down on spam. } var encodedWords = ConfigManager.LoadConfig <string>("word-filter"); var decodedString = Encoding.UTF8.GetString(Convert.FromBase64String(encodedWords)); // Bad words base 64 encoded for obvious reasons. var badWords = decodedString.ToLower().Split("\r\n"); var tweetWords = tweet.Message.ToLower().Replace("#", "").Split(" "); var badTweetWords = tweetWords.Intersect(badWords); if (badTweetWords.Count() > 0) { Console.WriteLine("Filtering tweet: ", tweet); return; } handler.Handle(tweet); }
public static bool TryGetHandler(string handlerName, out ITweetHandler handler) { if (_loadedHandlers == null) { throw new NullReferenceException("Handlers must be loaded before attempting to access them."); } _loadedHandlers.TryGetValue(handlerName, out handler); return(handler != null); }
public static void LoadRegistered() { _loadedHandlers.Clear(); var settings = ConfigManager.LoadConfig <HandlerRegistry>("handlers"); var handlerDetails = new List <HandlerDetails>(); var assemblyTypes = Assembly.GetExecutingAssembly().GetTypes(); foreach (var handler in settings.Handlers) { var name = handler.Name; Type correctType = null; try { correctType = assemblyTypes.First(t => { return(t.Name == handler.Type && typeof(ITweetHandler).IsAssignableFrom(t) && typeof(ITweetHandler).Name != t.Name); }); } catch (InvalidOperationException ex) { throw new InvalidOperationException($"Could not find tweet handler type for '{handler.Type}'", ex); } var data = handler.Data; HandlerDetails details = new HandlerDetails(name, correctType, data); handlerDetails.Add(details); } foreach (var details in handlerDetails) { ITweetHandler createdHandler = Create(details.Type, details.Data); _loadedHandlers.Add(details.Name, createdHandler); } }
public TweetEventWorker(ITweetHandler tweetHandler, IHubContext <TweetHub> tweetHub, ILogger <TweetEventWorker> logger) { _tweetHandler = tweetHandler; _tweetHub = tweetHub; _logger = logger; }