protected void StreamService_DataReceivedEvent(object sender, EventArgs e) { try { DataReceivedEventArgs eventArgs = e as DataReceivedEventArgs; SampledStreamModel model = eventArgs.StreamDataResponse; var aTweet = new Tweet { ChirpId = Guid.NewGuid(), TweetContent = model?.data?.text, FullTweetDataJson = model.data.source }; _repository.Insert <Tweet>(new List <Tweet> { aTweet }); _repository.Save(); Task.Run(() => ParseTweetMedtaData(aTweet, model)); } catch (Exception ex) { _logger.LogError(ex.ToString() + e?.ToString()); } }
private void StreamClient_StreamDataReceivedEvent(object sender, EventArgs e) { // convert to dto and model SampledStreamClient.TweetReceivedEventArgs eventArgs = e as SampledStreamClient.TweetReceivedEventArgs; DTO.SampledStream.SampledStreamDTO resultsDTO = JsonConvert.DeserializeObject <DTO.SampledStream.SampledStreamDTO>(eventArgs.StreamDataResponse); SampledStreamModel model = _iMapper.Map <SampledStreamDTO, SampledStreamModel>(resultsDTO); // raise event with Model OnDataReceivedEvent(new DataReceivedEventArgs { StreamDataResponse = model }); }
private void StreamService_DataReceivedEvent(object sender, EventArgs e) { try { SampledStreamService.DataReceivedEventArgs eventArgs = e as SampledStreamService.DataReceivedEventArgs; SampledStreamModel model = eventArgs.StreamDataResponse; Task.Run(() => cache.AddTweet(model)); } catch (Exception) { throw; } }
private void StreamClient_StreamDataReceivedEvent(object sender, EventArgs e) { // convert to dto and model SampledStreamClient.TweetReceivedEventArgs eventArgs = e as SampledStreamClient.TweetReceivedEventArgs; DTO.SampledStream.SampledStreamDTO resultsDTO = JsonConvert.DeserializeObject <DTO.SampledStream.SampledStreamDTO>(eventArgs.StreamDataResponse); SampledStreamModel model = _iMapper.Map <SampledStreamDTO, SampledStreamModel>(resultsDTO); // repurpose this model field to hold the full json response // so i have access to data their models dont provide model.data.source = eventArgs.StreamDataResponse; // raise event with Model OnDataReceivedEvent(new DataReceivedEventArgs { StreamDataResponse = model }); }
public void StoreAndRetriveData() { string domain = "twitter.com"; var service = new SampledStreamService(new MemoryStore <SampledStreamModel>()); //store var sampledStreamModel = new SampledStreamModel() { HasEmoji = false, HasPhotoUrl = false, UrlDomain = new List <string> { domain } }; var storeResult = service.StoreModel(sampledStreamModel); Assert.AreEqual(storeResult, true); //Retrive var retriveResult = service.RetriveModel().GetAwaiter().GetResult(); Assert.IsNotNull(retriveResult); Assert.AreEqual(retriveResult.Item1, 1); Assert.AreEqual(retriveResult.Item2.Count, 1); }
public TwitterStatsControllerTests() { model = Helper.GetMockTwitterData(); tweets.Add(model); }
private static void StreamService_DataReceivedEvent(object sender, EventArgs e) { SampledStreamService.DataReceivedEventArgs eventArgs = e as SampledStreamService.DataReceivedEventArgs; SampledStreamModel model = eventArgs.StreamDataResponse; }
private async Task ParseTweetMedtaData(Tweet theTweet, SampledStreamModel streamModel) { var hasEmoji = false; var hasHashTag = false; var hasUrl = false; var hasImage = false; if (_repository == null) { throw new Exception("WTF!!"); } dynamic twitterJsonResult = JObject.Parse(streamModel.data.source); var emojiMatches = EmojiData.Emoji.EmojiRegex.Matches(theTweet.TweetContent); hasEmoji = emojiMatches.Count() > 0; hasUrl = streamModel.data?.entities?.urls != null?streamModel.data.entities.urls.Any() : false; if (hasEmoji) { var tweetMojis = ProcessEmojis(theTweet.TweetContent.Codepoints(), theTweet); if (tweetMojis != null && tweetMojis.Any()) { await _repository.Insert <TweetEmoji>(tweetMojis); await _repository.Save(); } } if (hasUrl) { var tweetUrls = new List <TweetUrl>(); streamModel.data.entities.urls.ForEach(item => { hasImage = item.expanded_url.Contains("pic.twitter.com", StringComparison.InvariantCultureIgnoreCase) || item.expanded_url.Contains("Instagram", StringComparison.InvariantCultureIgnoreCase); var tUrl = new TweetUrl { ChirpId = theTweet.ChirpId, TweetUrlId = Guid.NewGuid(), Url = item.expanded_url, IsImage = hasImage, Domain = new Uri(item.expanded_url).Host }; tweetUrls.Add(tUrl); }); await _repository.Insert <TweetUrl>(tweetUrls); await _repository.Save(); } if (twitterJsonResult != null && twitterJsonResult.data.entities != null) { if (twitterJsonResult?.data?.entities?.hashtags != null) { hasHashTag = true; var hashEntries = twitterJsonResult.data.entities.hashtags.Count; List <TweetHashTag> tweetHashTags = new List <TweetHashTag>(); for (var counter = 0; counter < hashEntries; counter++) { tweetHashTags.Add(new TweetHashTag { ChirpId = theTweet.ChirpId, TweetHashTagId = Guid.NewGuid(), HashTag = twitterJsonResult.data.entities.hashtags[counter].tag }); } await _repository.Insert <TweetHashTag>(tweetHashTags); await _repository.Save(); ; } } var feathers = new List <TweetFeather> { new TweetFeather { ChirpId = theTweet.ChirpId, FeatherId = Guid.NewGuid(), HasEmoji = hasEmoji, HasHashTag = hasHashTag, HasImage = hasImage, HasUrl = hasUrl, TweetStamp = DateTime.Now } }; await _repository.Insert <TweetFeather>(feathers); await _repository.Save(); }
public async Task AddTweet(SampledStreamModel data) { await Task.Run(() => this.TweetList.Add(data)); }