public async Task InitTweetViewModel()
        {
            string consumerKey    = "";
            string consumerSecret = "";

            var         authSvc = DependencyService.Get <ILinqToTwitterAuthorizer>();
            IAuthorizer auth    = authSvc.GetAuthorizer(consumerKey, consumerSecret);

            await auth.AuthorizeAsync();

            var ctx = new TwitterContext(auth);

            Search searchResponse = await
                                        (from search in ctx.Search
                                        where search.Type == SearchType.Search &&
                                        search.Query == "\"Twitter\""
                                        select search)
                                    .SingleAsync();

            Tweets =
                (from tweet in searchResponse.Statuses
                 select new Tweet
            {
                StatusID = tweet.StatusID,
                ScreenName = tweet.User.ScreenNameResponse,
                Text = tweet.Text,
                ImageUrl = tweet.User.ProfileImageUrl
            })
                .ToList();
        }
Example #2
0
        public async Task RefreshData()
        {
            _auth = _linqToTwitterAuthorizer.GetAuthorizer(Secrets.TwitterAPIKey, Secrets.TwitterAPISecretKey);
            await _auth.AuthorizeAsync();

            //ht--tps://github.com/JoeMayo/LinqToTwitter/wiki/Querying-the-User-Timeline
            using (var ctx = new TwitterContext(_auth))
            {
                List <Status> tweets =
                    await
                        (from tweet in ctx.Status
                        where tweet.Type == StatusType.User &&
                        tweet.ScreenName == UserName &&
                        tweet.Count == 200 &&
                        tweet.SinceID == 1 /*sinceID*/ &&
                        tweet.TweetMode == TweetMode.Extended
                        select tweet)
                    .ToListAsync();

                Tweets =
                    (from tweet in tweets
                     select new Tweet
                {
                    StatusID = tweet.StatusID,
                    ScreenName = tweet.User.ScreenNameResponse,
                    Text = tweet.FullText,
                    ImageUrl = tweet.User.ProfileImageUrl
                })
                    .ToList();
            }
            InitializeChain();
            GenerateTweets(GenerateNumber);
        }
Example #3
0
        public async Task <TwitterContext> GetTwitterContext()
        {
            IAuthorizer auth = Secrets.DoSingleUserAuth();
            await auth.AuthorizeAsync();

            return(new TwitterContext(auth));
        }
Example #4
0
        public IAuthenticationResult Authenticate(IAuthorizer authorizer)
        {
            IAuthenticationResult result;

            authorizer.AuthorizeAsync();
            TwitterContext twitterContext = new TwitterContext(authorizer);

            try{
                Account account = twitterContext.Account.SingleOrDefault(acc => acc.Type == AccountType.VerifyCredentials);
                result = new AuthenticationResult(true, $"Successfully authenticated to twitter API as user : {account.User.Name} .");
            } catch (Exception exception) {
                if (exception.InnerException?.GetType() == typeof(TwitterQueryException))
                {
                    result = ((TwitterQueryException)exception.InnerException).ErrorCode == BadAuthenticationDataErrorCode ?
                             new AuthenticationResult(false, "Unable to twitter API. Check credential details.") :
                             new AuthenticationResult(false, $"Unknown error was encountered:\n {exception.Message}");
                }
                else
                {
                    throw;
                }
            }
            Logger.LogMessage(new LogMessage($"Authentication {(result.Success ? "succesfull" : "failed")}.", Severity.Information));
            return(result);
        }
Example #5
0
        public async Task InitTweetViewModel()
        {
            _auth = _linqToTwitterAuthorizer.GetAuthorizer(consumerKey, consumerSecret);
            await _auth.AuthorizeAsync();

            //ht--tps://github.com/JoeMayo/LinqToTwitter/wiki/Querying-the-User-Timeline
            using (var ctx = new TwitterContext(_auth))
            {
                List <Status> tweets =
                    await
                        (from tweet in ctx.Status
                        where tweet.Type == StatusType.User &&
                        tweet.ScreenName == "realDonaldTrump" &&
                        tweet.Count == 200 /*MaxTweetsToReturn*/ &&
                        tweet.SinceID == 1 /*sinceID*/ &&
                        tweet.TweetMode == TweetMode.Extended
                        select tweet)
                    .ToListAsync();

                Tweets =
                    (from tweet in tweets
                     select new Tweet
                {
                    StatusID = tweet.StatusID,
                    ScreenName = tweet.User.ScreenNameResponse,
                    Text = tweet.FullText,
                    ImageUrl = tweet.User.ProfileImageUrl
                })
                    .ToList();
            }
            var chain = new MarkovChain <string>(1);

            foreach (var t in Tweets)
            {
                chain.Add(t.Text.Split(' '), 1);
                //foreach(var s in t.Text.Split(' '))
                //{
                //    chain.Add(s, 1);
                //}
            }
            Tweets.Add(new Tweet()
            {
                Text = "--------------"
            });
            //String testOutput = String.Empty;
            var rand = new Random();

            for (int i = 0; i < 10; i++)
            {
                //var word = new string(chain.Chain(rand).ToArray());
                //testOutput += " " + word;
                var sentence = string.Join(" ", chain.Chain(rand));
                Tweets.Add(new Tweet()
                {
                    Text = sentence
                });
            }
            //Tweets.Add(new Tweet() { Text = testOutput });
        }
Example #6
0
        public static async Task <TwitterContext> GetTwitterContextAsync(string ConsumerKey, string TwitterConsumerSecret, string TwitterAccessToken, string TwitterAccessTokenSecret)
        {
            IAuthorizer auth = GetAuthorizer(ConsumerKey, TwitterConsumerSecret, TwitterAccessToken, TwitterAccessTokenSecret);

            await auth.AuthorizeAsync();

            return(new TwitterContext(auth));
        }
Example #7
0
 private TwitterContext AuthorizeContext(IAuthorizer auth)
 {
     try
     {
         auth.AuthorizeAsync().Wait(5 * 1000);
         return(new TwitterContext(auth));
     }
     catch (Exception e)
     {
         throw new Exception("TwitterAPI怀failed." + e.Message);
     }
 }
Example #8
0
        public async Task LoadTwitterData()
        {
            _auth = _linqToTwitterAuthorizer.GetAuthorizer(Secrets.TwitterAPIKey, Secrets.TwitterAPISecretKey);
            await _auth.AuthorizeAsync();

            using (var ctx = new TwitterContext(_auth))
            {
                await RunUserTimelineQueryAsync(ctx);
            }
            InitializeChain();
            GenerateTweets(GenerateNumber);
        }
Example #9
0
        static void Main(string[] args)
        {
            ShowMenu();

            IAuthorizer authorizer = DoPinOAuth();

            authorizer.AuthorizeAsync().Wait();
            var    twitterCtx              = new TwitterContext(authorizer);
            string twitterHandle           = "Placeholder";
            int    presidentialCandidateID = 0;

            GetPresidentialCandidateTweets(twitterCtx, twitterHandle, presidentialCandidateID).Wait();
            //AndrewYang
            Console.Write("\nPress any key to close console window...");
            Console.ReadKey(true);
        }
Example #10
0
        static async Task ExtractTweetsAsync()
        {
            IAuthorizer auth = DoSingleUserAuth();

            await auth.AuthorizeAsync();

            var   twitterCtx   = new TwitterContext(auth);
            ulong lastTweetId  = 0;
            var   tweetsAmount = 0;

            while (tweetsAmount < 3200)
            {
                using (var context = new TweetsDbContext())
                {
                    lastTweetId = await context.Tweets.CountAsync() > 0 ? (ulong)await context.Tweets.MaxAsync(tweet => tweet.TweetId) : 0;

                    var tweets = await SearchContext.DoSearchAsync(twitterCtx, lastTweetId);

                    if (tweets.Count <= 0)
                    {
                        break;
                    }
                    context.Tweets.AddRange(tweets);
                    await context.Database.OpenConnectionAsync();

                    try
                    {
                        await context.Database.ExecuteSqlInterpolatedAsync($"SET IDENTITY_INSERT dbo.Tweets ON");

                        await context.SaveChangesAsync();

                        await context.Database.ExecuteSqlInterpolatedAsync($"SET IDENTITY_INSERT dbo.Tweets OFF");
                    }
                    finally
                    {
                        await context.Database.CloseConnectionAsync();
                    }
                    tweetsAmount += tweets.Count;
                }
            }
        }
        private async Task RefreshAsync()
        {
            await _auth.AuthorizeAsync();

            using (var ctx = new TwitterContext(_auth))
            {
                var srch = await
                               (from tweet in ctx.Status
                               where tweet.Type == StatusType.Home
                               select new Tweet()
                {
                    StatusID   = tweet.StatusID,
                    ScreenName = tweet.User.ScreenNameResponse,
                    Text       = tweet.Text,
                    ImageUrl   = tweet.RetweetedStatus != null && tweet.RetweetedStatus.User != null ?
                                 tweet.RetweetedStatus.User.ProfileImageUrl.Replace("http://", "https://") : tweet.User.ProfileImageUrl
                }).ToListAsync();

                Tweets = new List <Tweet>(srch);
            }
        }
Example #12
0
        public async Task SearchUsers(String partial)
        {
            _auth = _linqToTwitterAuthorizer.GetAuthorizer(Secrets.TwitterAPIKey, Secrets.TwitterAPISecretKey);
            await _auth.AuthorizeAsync();

            using (var ctx = new TwitterContext(_auth))
            {
                var foundUsers =
                    await
                        (from user in ctx.User
                        where user.Type == UserType.Search &&
                        user.Query == partial
                        select user)
                    .ToListAsync();

                if (foundUsers != null)
                {
                    foundUsers.ForEach(user =>
                                       Console.WriteLine("User: " + user.ScreenNameResponse));
                }
            }
        }
Example #13
0
        static async Task DoDemosAsync()
        {
            IAuthorizer auth = ChooseAuthenticationStrategy();

            await auth.AuthorizeAsync();

            // This is how you access credentials after authorization.
            // The oauthToken and oauthTokenSecret do not expire.
            // You can use the userID to associate the credentials with the user.
            // You can save credentials any way you want - database, isolated storage, etc. - it's up to you.
            // You can retrieve and load all 4 credentials on subsequent queries to avoid the need to re-authorize.
            // When you've loaded all 4 credentials, LINQ to Twitter will let you make queries without re-authorizing.
            //
            //var credentials = auth.CredentialStore;
            //string oauthToken = credentials.OAuthToken;
            //string oauthTokenSecret = credentials.OAuthTokenSecret;
            //string screenName = credentials.ScreenName;
            //ulong userID = credentials.UserID;
            //

            var twitterCtx = new TwitterContext(auth);

            await LinqToTwitter.SingleStatusQueryAsync(twitterCtx);
        }
Example #14
0
        static async Task DoDemosAsync()
        {
            IAuthorizer auth = ChooseAuthenticationStrategy();

            await auth.AuthorizeAsync();

            // This is how you access credentials after authorization.
            // The oauthToken and oauthTokenSecret do not expire.
            // You can use the userID to associate the credentials with the user.
            // You can save credentials any way you want - database, isolated storage, etc. - it's up to you.
            // You can retrieve and load all 4 credentials on subsequent queries to avoid the need to re-authorize.
            // When you've loaded all 4 credentials, LINQ to Twitter will let you make queries without re-authorizing.
            //
            //var credentials = auth.CredentialStore;
            //string oauthToken = credentials.OAuthToken;
            //string oauthTokenSecret = credentials.OAuthTokenSecret;
            //string screenName = credentials.ScreenName;
            //ulong userID = credentials.UserID;
            //

            var  twitterCtx = new TwitterContext(auth);
            char key;

            do
            {
                ShowMenu();

                key = Console.ReadKey(true).KeyChar;

                switch (key)
                {
                case '0':
                    Console.WriteLine("\n\tRunning Account Demos...\n");
                    await AccountDemos.RunAsync(twitterCtx);

                    break;

                case '1':
                    Console.WriteLine("\n\tRunning Account Activity Demos...\n");
                    await AccountActivityDemos.RunAsync(twitterCtx);

                    break;

                case '2':
                    Console.WriteLine("\n\tRunning Block Demos...\n");
                    await BlockDemos.RunAsync(twitterCtx);

                    break;

                case '3':
                    Console.WriteLine("\n\tRunning Direct Message Events Demos...\n");
                    await DirectMessageEventsDemos.RunAsync(twitterCtx);

                    break;

                case '4':
                    Console.WriteLine("\n\tRunning Favorite Demos...\n");
                    await FavoriteDemos.RunAsync(twitterCtx);

                    break;

                case '5':
                    Console.WriteLine("\n\tRunning Friendship Demos...\n");
                    await FriendshipDemos.RunAsync(twitterCtx);

                    break;

                case '6':
                    Console.WriteLine("\n\tRunning Geo Demos...\n");
                    await GeoDemos.RunAsync(twitterCtx);

                    break;

                case '7':
                    Console.WriteLine("\n\tRunning Help Demos...\n");
                    await HelpDemos.RunAsync(twitterCtx);

                    break;

                case '8':
                    Console.WriteLine("\n\tRunning List Demos...\n");
                    await ListDemos.RunAsync(twitterCtx);

                    break;

                case '9':
                    Console.WriteLine("\n\tRunning Media Demos...\n");
                    await MediaDemos.RunAsync(twitterCtx);

                    break;

                case 'a':
                case 'A':
                    Console.WriteLine("\n\tRunning Mutes Demos...\n");
                    await MuteDemos.RunAsync(twitterCtx);

                    break;

                case 'b':
                case 'B':
                    Console.WriteLine("\n\tRunning Raw Demos...\n");
                    await RawDemos.RunAsync(twitterCtx);

                    break;

                case 'c':
                case 'C':
                    Console.WriteLine("\n\tRunning Saved Search Demos...\n");
                    await SavedSearchDemos.RunAsync(twitterCtx);

                    break;

                case 'd':
                case 'D':
                    Console.WriteLine("\n\tRunning Search Demos...\n");
                    await SearchDemos.RunAsync(twitterCtx);

                    break;

                case 'e':
                case 'E':
                    Console.WriteLine("\n\tRunning Status Demos...\n");
                    await StatusDemos.RunAsync(twitterCtx);

                    break;

                case 'f':
                case 'F':
                    Console.WriteLine("\n\tRunning Stream Demos...\n");
                    await StreamDemos.RunAsync(twitterCtx);

                    break;

                case 'g':
                case 'G':
                    Console.WriteLine("\n\tRunning Trend Demos...\n");
                    await TrendDemos.RunAsync(twitterCtx);

                    break;

                case 'h':
                case 'H':
                    Console.WriteLine("\n\tRunning User Demos...\n");
                    await UserDemos.RunAsync(twitterCtx);

                    break;

                case 'i':
                case 'I':
                    Console.WriteLine("\n\tRunning Welcome Message Demos...\n");
                    await WelcomeMessageDemos.RunAsync(twitterCtx);

                    break;

                case 'q':
                case 'Q':
                    Console.WriteLine("\nQuitting...\n");
                    break;

                default:
                    Console.WriteLine(key + " is unknown");
                    break;
                }
            } while (char.ToUpper(key) != 'Q');
        }
        private async Task InitTwitterAPIAsync(IAuthorizer auth)
        {
            await auth.AuthorizeAsync();

            _twitterContext = new TwitterContext(auth);
        }
Example #16
0
 static TwitterContext AuthTwitterContext(IAuthorizer authapp)
 {
     authapp.AuthorizeAsync().Wait();
     return(new TwitterContext(authapp));
 }
Example #17
0
        public async Task <TResponse> Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate <TResponse> next)
        {
            await _authorizer.AuthorizeAsync(request);

            return(await next());
        }