public MostHashtaggedModule(IRepository <string, IEnumerable <Hashtag> > hashtags, IIgnoredHashtagsService ignoredHashtagsService) { this.Get["/most-hashtagged/{track}", true] = async(parameters, __) => { // see https://github.com/NancyFx/Nancy/issues/1154 var track = ((string)parameters.track).Replace("해시", "#"); var trackHashtags = (await hashtags.GetAsync(track)).ToList(); var entries = trackHashtags .Where(item => !ignoredHashtagsService.Get().Contains(item.Text, StringComparer.OrdinalIgnoreCase)) .GroupBy(tweet => tweet.Text, StringComparer.InvariantCultureIgnoreCase) .Select(g => new HashtagEntry { Text = g.Key, Count = g.Count(), }) .OrderByDescending(entry => entry.Count) .Select((entry, index) => { entry.Position = index + 1; return(entry); }) .Take(10) .ToList(); return(new Leaderboard <HashtagEntry> { Entries = entries, Count = trackHashtags.Count, Since = trackHashtags.Any() ? trackHashtags.Min(hashtag => hashtag.HashtaggedAt) : (DateTime?)null, LastActivityDateTime = trackHashtags.Any() ? trackHashtags.Max(hashtag => hashtag.HashtaggedAt) : (DateTime?)null, }); }; }
public Bootstrapper(IMongoDatabase mongoDatabase, IIgnoredUserNamesService ignoredUserNamesService, IIgnoredHashtagsService ignoredHashtagsService) { this.mongoDatabase = mongoDatabase; this.ignoredUserNamesService = ignoredUserNamesService; this.ignoredHashtagsService = ignoredHashtagsService; }