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());
            }
        }
Пример #2
0
        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
            });
        }
Пример #3
0
 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
            });
        }
Пример #5
0
        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);
        }
Пример #6
0
 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();
        }
Пример #9
0
 public async Task AddTweet(SampledStreamModel data)
 {
     await Task.Run(() => this.TweetList.Add(data));
 }