/// <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; } }
/// <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)); }
/// <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); } }