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