Ejemplo n.º 1
0
        public async Task FilteredStream_UrlMatching()
        {
            if (!EndToEndTestConfig.ShouldRunEndToEndTests)
            {
                return;
            }

            var stream = _tweetinviTestClient.Streams.CreateFilteredStream();

            stream.AddTrack("twitter.com");
            stream.AddTrack("facebook.com");
            stream.AddTrack("amazon.com");
            stream.AddTrack("apple.com");

            MatchedTweetReceivedEventArgs matchedTweetEvent = null;

            stream.MatchingTweetReceived += (sender, args) =>
            {
                matchedTweetEvent = args;
                _logger.WriteLine($"Tweet matched via {args.MatchOn.ToString()}");
                _logger.WriteLine(matchedTweetEvent.ToString());
                stream.Stop();
            };

            var runStreamTask = Task.Run(async() =>
            {
                _logger.WriteLine("Before starting stream");
                await stream.StartMatchingAllConditionsAsync();
                _logger.WriteLine("Stream completed");
            });

            // it can take a while before receiving matching tweets
            var delayTask = Task.Delay(TimeSpan.FromMinutes(2));
            var task      = await Task.WhenAny(runStreamTask, delayTask);

            if (task != runStreamTask)
            {
                throw new TimeoutException();
            }

            Assert.Equal(matchedTweetEvent.MatchOn, MatchOn.URLEntities);
            Assert.True(matchedTweetEvent.MatchOn == MatchOn.URLEntities || matchedTweetEvent.QuotedTweetMatchOn == MatchOn.URLEntities);

            await Task.Delay(TimeSpan.FromSeconds(10)); // this is for preventing Enhance Your Calm message from Twitter
        }