示例#1
0
        /// <summary>
        /// Open a connection to user streams service (Events, DirectMessages...).
        /// </summary>
        /// <param name="parser">Specific stream's result parser.</param>
        /// <param name="callback">Method invoked each time a result occurs.</param>
        /// <returns>Awaitable task.</returns>
        public Task StartUserStreamAsync(TwitterUserStreamParser parser, TwitterStreamCallbacks.TwitterStreamCallback callback)
        {
            try
            {
                var uri = new Uri($"{UserStreamUrl}/user.json?replies=all");

                _streamRequest = new TwitterOAuthRequest();

                return(_streamRequest.ExecuteGetStreamAsync(uri, _tokens, rawResult => callback(parser.Parse(rawResult))));
            }
            catch (WebException wex)
            {
                HttpWebResponse response = wex.Response as HttpWebResponse;
                if (response != null)
                {
                    if ((int)response.StatusCode == 429)
                    {
                        throw new TooManyRequestsException();
                    }

                    if (response.StatusCode == HttpStatusCode.Unauthorized)
                    {
                        throw new OAuthKeysRevokedException();
                    }
                }

                throw;
            }
        }
示例#2
0
        /// <summary>
        /// Open a connection to user streams service (Events, DirectMessages...).
        /// </summary>
        /// <param name="parser">Specific stream's result parser.</param>
        /// <param name="callback">Method invoked each time a result occurs.</param>
        /// <returns>Awaitable task.</returns>
        public Task StartUserStreamAsync(TwitterUserStreamParser parser, TwitterStreamCallbacks.TwitterStreamCallback callback)
        {
            var uri = new Uri($"{UserStreamUrl}/user.json?replies=all");

            _streamRequest = new TwitterOAuthRequest();

            return(_streamRequest.ExecuteGetStreamAsync(uri, _tokens, rawResult => callback(parser.Parse(rawResult)), _signatureManager));
        }
示例#3
0
        /// <summary>
        /// Open a connection to user's stream service
        /// </summary>
        /// <param name="callback">Method called each time a tweet arrives</param>
        /// <returns>Task</returns>
        public async Task StartUserStreamAsync(TwitterStreamCallbacks.TwitterStreamCallback callback)
        {
            if (Provider.LoggedIn)
            {
                await Provider.StartUserStreamAsync(new TwitterUserStreamParser(), callback);

                return;
            }

            var isLoggedIn = await LoginAsync();

            if (isLoggedIn)
            {
                await StartUserStreamAsync(callback);
            }
        }