public void ConfigureStream() { stream.ClearFollows(); stream.ClearTracks(); foreach (Subscription s in _subRepo.Find(s => s.Event.Id == streamEvent.Id)) { if (s.Type == Common.SubType.TRACK.ToString()) { stream.AddTrack(s.Value); } else if (s.Type == Common.SubType.PERSON.ToString()) { stream.AddFollow(s.TwitterId); } } stream.MatchingTweetReceived += (sender, args) => { Models.User isBannedUser = _userRepo.Find(b => (b.UserId == args.Tweet.CreatedBy.Id) && b.Type == Common.BanType).SingleOrDefault(); if (isBannedUser != null) { return; } Models.Tweet newTweet = new Models.Tweet(args.Tweet.Id, args.Tweet.FullText, args.Tweet.CreatedBy.ScreenName, args.Tweet.CreatedAt.ToUniversalTime(), args.Tweet.CreatedBy.Name, args.Tweet.CreatedBy.ProfileImageUrlFullSize, streamEvent, args.Tweet.CreatedBy.Id); TwitterWall.Models.Tweet result = _tweetRepo.Find(obj => obj.TweetId == newTweet.TweetId && obj.Event.Id == streamEvent.Id).SingleOrDefault(); if (result != null) { return; } _tweetRepo.Add(newTweet); _mediaRepo.AddFromTweet(args.Tweet, streamEvent); }; stream.StreamStopped += (sender, args) => { var exceptionThatCausedTheStreamToStop = args.Exception; var twitterDisconnectMessage = args.DisconnectMessage; StreamManager.ConnectionManager.GetHubContext <TwitterHub>().Clients.All.streamStatusChanged("Stopped: " + args.Exception + ". " + args.DisconnectMessage); }; }
async private Task <UserCredential> GetUserTokens(string oauth_token, string oauth_verifier) { using (HttpClient client = _handler == null ? new HttpClient() : new HttpClient(_handler)) { Random rand = new Random(); TwitterAuth auth = new TwitterAuthBuilder(rand) .SetConsumerKeys(CONSUMER_KEY, CONSUMER_SECRET) .SetSignatureMethod("HMAC-SHA1") .SetUrl(API_ACCESS_TOKEN) .SetVersion("1.0") .SetOauthToken(oauth_token) .BuildAndSign(); List <KeyValuePair <string, string> > data = new List <KeyValuePair <string, string> >(); data.Add(new KeyValuePair <string, string>("oauth_verifier", oauth_verifier)); FormUrlEncodedContent content = new FormUrlEncodedContent(data); client.DefaultRequestHeaders.Add("oauth_verifier", oauth_verifier); client.DefaultRequestHeaders.Add("Authorization", auth.AuthenticationHeader); HttpResponseMessage response = await client.PostAsync(API_ACCESS_TOKEN, content); if (response.StatusCode != HttpStatusCode.OK) { return(null); } string responseString = await response.Content.ReadAsStringAsync(); string accessToken = responseString.Split('&')[0].Split('=')[1]; string accessSecret = responseString.Split('&')[1].Split('=')[1]; string screenName = responseString.Split('&')[3].Split('=')[1]; User user = _userRepo.Find(u => u.Handle == screenName && u.Type == "ADMIN").SingleOrDefault(); if (user != null) { UserCredential uc = new UserCredential(screenName, accessToken, accessSecret); uc.GenerateHash(); streamManager.AddUserCredentials(uc); return(uc); } return(null); } }