public MessagesQueryResult MapBunch(IEnumerable <MessageEntity> messages, HashTagWord hashtag) { var results = new MessagesQueryResult(); foreach (var entity in messages) { SocialMediaType mediaType; Enum.TryParse(entity.MediaType.ToString(), out mediaType); var mapper = new EntityToUserResultMapper(); var message = new MessageQueryResult { Id = entity.Id, MessageText = entity.MessageText, HashTags = new List <HashTagQueryResult> { new HashTagQueryResult { HashTag = hashtag } }, MediaType = mediaType, PostDate = entity.PostDate, NetworkId = entity.NetworkId, User = mapper.MapSingle(entity.User) }; results.Messages.Add(message); } return(results); }
public MessagesQueryResult MapSingle(VkNewsFeed feed, HashTagWord hashtag) { var results = new MessagesQueryResult(); // vk doesn't return list of all hashtags in message // todo: consider parsing message for hashtags. But it might be too memory consuming operation. foreach (var post in feed.Feed) { var date = DateTimeOffset.FromUnixTimeSeconds(post.UnixTimeStamp).UtcDateTime; var user = FillUser(post, feed); //var message = // new MessageQueryResult(0, // post.Text, // new List<HashTagQueryResult> // { // new HashTagQueryResult // { // HashTag = hashtag // } // }, // SocialMediaType.VK, // date, // post.Id.ToString(), // user); //results.Messages.Add(message); } return(results); }
public void CompareLinesInDatabaseTest() { var options = new DbContextOptionsBuilder <SqlApplicationDbContext>() .UseInMemoryDatabase(databaseName: "CompareLinesInDatabaseTest") .Options; using (SqlApplicationDbContext context = new SqlApplicationDbContext(options)) { //Arrange var hashtag = new HashTagWord("microsoft"); var handler = new EfMessagesGetQueryHandler(context); var query = new MessagesQuery { HashTag = hashtag }; var mapper = new EntityToMessagesResultMapper(); var data = GetData(hashtag); InsertData(data, context); context.SaveChanges(); //Act var result = handler.Handle(query); MessagesQueryResult mappedResult = mapper.MapBunch(data, hashtag); //Assert Assert.Equal(mappedResult.Messages, result.Result.Messages); } }
private SearchTweetsParameters SearchParams(HashTagWord hashTag, TimeSpan span) { var tweetsParameters = new SearchTweetsParameters(hashTag.TagWithHash) { TweetSearchType = TweetSearchType.OriginalTweetsOnly, Since = DateTime.Now - span, Filters = TweetSearchFilters.Hashtags }; return(tweetsParameters); }
public MessagesQueryResult MapBunch(IEnumerable <VkNewsFeed> feeds, HashTagWord hashtag) { var results = new MessagesQueryResult(); foreach (var feed in feeds) { var result = MapSingle(feed, hashtag); if (result.Messages.Count > 0) { results.Messages.AddRange(result.Messages); } } return(results); }
public async Task <IQueryResult> GetAllAsync(HashTagWord hashtag) { ISearchTweetsParameters tweetsParameters = new SearchTweetsParameters(hashtag.TagWithHash); tweetsParameters.TweetSearchType = TweetSearchType.OriginalTweetsOnly; IEnumerable <ITweet> tweets = await SearchAsync.SearchTweets(tweetsParameters); var fail = ExceptionHandler.GetLastException()?.TwitterDescription; if (!String.IsNullOrEmpty(fail)) { logger.LogError( LoggingEvents.EXCEPTION_GET_TWITTER_MESSAGE, "Failed to get messages by {hashtag} with {error}", hashtag, fail); } var mapper = new TwitterMessageResultMapper(); return(mapper.MapBunch(tweets)); }
public TwitterJobTask(HashTagWord tag, QueueParams parameters, int interval) { Tag = tag; Parameters = parameters; Interval = interval; }