public void StopTweetStream()
 {
     if (_filteredStream.StreamState != StreamState.Stop)
     {
         _logger.LogInformation("Stoping tweet stream.");
         _filteredStream.Stop();
     }
 }
예제 #2
0
 private void OnRefreshTimerElapsed(object sender, System.Timers.ElapsedEventArgs e)
 {
     _refreshTimer.Dispose();
     if (_currentStream != null)
     {
         _currentStream.Stop();
     }
     ThreadPool.QueueUserWorkItem(async q =>
     {
         var credentials    = _applicationClient.Credentials;
         _applicationClient = new TwitterClient(credentials);
         await ShowHomeTimeline();
     });
 }
예제 #3
0
        private async void CheckTimeToUpdateTickers()
        {
            if (DateTime.Now.Hour - _lastUpdateTime.Hour > 1)
            {
                _twitterStream.Stop();
                await LoadTickersAsync();

                _twitterStream = _twitterClient.Streams.CreateFilteredStream();
                SetStreamTrackers();
                try
                {
                    await _twitterStream.StartMatchingAnyConditionAsync();
                }
                catch
                {
                    await MonitorTweetsAsync();
                }
            }
        }
예제 #4
0
        public async Task StartAsync(CancellationToken cancellationToken)
        {
            var consumerKey    = Environment.GetEnvironmentVariable("TwitterConsumerKey");
            var consumerSecret = Environment.GetEnvironmentVariable("TwitterConsumerSecret");
            var accessKey      = Environment.GetEnvironmentVariable("TwitterAccessKey");
            var accessSecret   = Environment.GetEnvironmentVariable("TwitterAccessSecret");

            var userClient = new TwitterClient(consumerKey, consumerSecret, accessKey, accessSecret);

            _filteredStream = userClient.Streams.CreateFilteredStream();

            if (!string.IsNullOrEmpty(_attribute.Filter))
            {
                _filteredStream.AddTrack(_attribute.Filter);
            }

            if (!string.IsNullOrWhiteSpace(_attribute.User))
            {
                var user = await userClient.Users.GetUserAsync(_attribute.User);

                _filteredStream.AddFollow(user);
            }

            _filteredStream.MatchingTweetReceived += async(obj, tweetEvent) =>
            {
                var triggerData = new TriggeredFunctionData
                {
                    TriggerValue = tweetEvent
                };
                await Executor.TryExecuteAsync(triggerData, CancellationToken.None);
            };

            _filteredStream.DisconnectMessageReceived += (obj, disconnectEvent) =>
            {
                _filteredStream.Stop();
            };

            await _filteredStream.StartMatchingAllConditionsAsync();
        }
예제 #5
0
 public Task StopAsync(CancellationToken cancellationToken)
 {
     _filteredStream.Stop();
     return(Task.CompletedTask);
 }