Пример #1
0
 /// <summary>
 /// Calls Twitter API and checks if user is authenticated
 /// </summary>
 private void AuthenticateUser()
 {
     log.Info(string.Format("AuthenticateUser: Class {0} Method {1}", nameof(MyTwitterModule), nameof(AuthenticateUser)));
     try
     {
         singleUserAuthorizer = new SingleUserAuthorizer
         {
             CredentialStore = new SingleUserInMemoryCredentialStore
             {
                 ConsumerKey       = twitterConsumerKey,
                 ConsumerSecret    = twitterConsumerSecret,
                 AccessToken       = twitterAccessToken,
                 AccessTokenSecret = twitterAccessTokenSecret
             }
         };
         twitterContext = new TwitterContext(singleUserAuthorizer);
         if (twitterContext != null)
         {
             var searchResult = (from search in twitterContext.Search
                                 where search.Type == SearchType.Search &&
                                 search.Query == "rain"
                                 select search).SingleOrDefault();
         }
     }
     catch (Exception ex)
     {
         log.Error(string.Format("Twitter Authorization Failed, exiting the application: Class {0} Method {1} Exception {2}", nameof(MyTwitterModule), nameof(AuthenticateUser), ex.Message.ToString()));
         MessageBox.Show(Resources.TwitterAuthenticationError, Resources.TwitterAuthenticationErrorCaption, MessageBoxButton.OK, MessageBoxImage.Error);
         Application.Current.Shutdown();
     }
 }
Пример #2
0
        private static void ShowTweets(string i_sUser, int i_iCount)
        {
            var authTwitter = new SingleUserAuthorizer
            {
                CredentialStore = new SingleUserInMemoryCredentialStore
                {
                    ConsumerKey      = "4Kl5yOtTAl1tg6ItCtDFfhaxy",
                    ConsumerSecret   = "pUQgM6XnP2GjDIgNIH5LavVeCJEZ6CltnuSNQxvZE62z8J1j4V",
                    OAuthToken       = "120139909-ZdyoSXu8wsw1plYhVgQWB58ieCdv9p5tGoCxSw0t", //need this value from config.json file,
                    OAuthTokenSecret = "wd0jneYWx4uOnLPfxJKEHZkz9fbqyGXYKTyAdUZKxLF20"
                }
            };

            //await authTwitter.AuthorizeAsync();
            var objTwitter   = new TwitterContext(authTwitter);
            var statusTweets =
                from tweet in objTwitter.Status
                where tweet.Type == StatusType.User &&
                tweet.ID == 120139909 && tweet.Count == i_iCount           // ID for User
                select tweet;

            foreach (var tweet in statusTweets)
            {
                Console.WriteLine(tweet.Text);
                Console.WriteLine();
            }
            Console.ReadLine();
        }
        private async Task <IAuthorizer> AuthAsync()
        {
            if (_authorizer == null)
            {
                var auth = new SingleUserAuthorizer
                {
                    CredentialStore = new SingleUserInMemoryCredentialStore
                    {
                        ConsumerKey       = "i4CpLM6hX3TuR2EGNvAfVOYxT",
                        ConsumerSecret    = "HUm1Vfp4Y1HhKg1hKQrypOHQyOuHohNrYuT6qU2spKS9rJ1YpN",
                        OAuthToken        = "314742868-8K7Fcv7KgaY3WXzr60MLQN9776BLD7z62iuHWkf2",
                        OAuthTokenSecret  = "vmPbZGBQ3wphMHUBM4bXkAW09axy0M8vcGurK1LH4oYli",
                        AccessToken       = "314742868-8K7Fcv7KgaY3WXzr60MLQN9776BLD7z62iuHWkf2",
                        AccessTokenSecret = "vmPbZGBQ3wphMHUBM4bXkAW09axy0M8vcGurK1LH4oYli"
                    }

                    /*
                     * CredentialStore = new InMemoryCredentialStore
                     * {
                     *      ConsumerKey = "i4CpLM6hX3TuR2EGNvAfVOYxT",
                     *      ConsumerSecret = "HUm1Vfp4Y1HhKg1hKQrypOHQyOuHohNrYuT6qU2spKS9rJ1YpN",
                     *      OAuthToken = "314742868-8K7Fcv7KgaY3WXzr60MLQN9776BLD7z62iuHWkf2",
                     *      OAuthTokenSecret = "vmPbZGBQ3wphMHUBM4bXkAW09axy0M8vcGurK1LH4oYli"
                     * }
                     */
                };
                await auth.AuthorizeAsync();

                _authorizer = auth;
            }
            return(_authorizer);
        }
Пример #4
0
 private ITwitterContext CreateContext(TwitterCredentials credentials)
 {
     try
     {
         var auth = new SingleUserAuthorizer
         {
             CredentialStore = new SingleUserInMemoryCredentialStore
             {
                 ConsumerKey       = credentials.ConsumerKey,
                 ConsumerSecret    = credentials.ConsumerSecret,
                 AccessToken       = credentials.AccessToken,
                 AccessTokenSecret = credentials.AccessTokenSecret
             }
         };
         return(new TwitterContextWrapper(new TwitterContext(auth)));
     }
     catch (Exception e)
     {
         _eventTracker.TrackError(
             "TwitterContext",
             "Twitter context failed to initialize",
             new
         {
             exception = e
         });
         throw;
     }
 }
Пример #5
0
        public async Task SendTweetAsync(SendTweetMessage sendTweetMessage)
        {
            var auth = new SingleUserAuthorizer
            {
                CredentialStore = new SingleUserInMemoryCredentialStore
                {
                    ConsumerKey      = SettingsHelper.GetEnvironmentVariable("TwitterConsumerKey"),
                    ConsumerSecret   = SettingsHelper.GetEnvironmentVariable("TwitterConsumerSecret"),
                    OAuthToken       = SettingsHelper.GetEnvironmentVariable("TwitterOAuthToken"),
                    OAuthTokenSecret = SettingsHelper.GetEnvironmentVariable("TwitterOAuthTokenSecret")
                }
            };

            await auth.AuthorizeAsync();

            var ctx          = new TwitterContext(auth);
            var tweetMessage = BuildTweet(sendTweetMessage);

            if (sendTweetMessage.EventLocationLatitude > 0 && sendTweetMessage.EventLocationLongitude > 0)
            {
                await ctx.TweetAsync(tweetMessage, sendTweetMessage.EventLocationLatitude, sendTweetMessage.EventLocationLongitude, true);
            }
            else
            {
                await ctx.TweetAsync(tweetMessage);
            }
        }
Пример #6
0
        public DataTable TTGetir(int WoeId)
        {
            DataTable Table = new DataTable();

            Table.Columns.Add();
            var auth = new SingleUserAuthorizer
            {
                Credentials = new SingleUserInMemoryCredentials
                {
                    ConsumerKey              = ConsumerKey,
                    ConsumerSecret           = ConsumerSecret,
                    TwitterAccessToken       = AccessToken,
                    TwitterAccessTokenSecret = AccessTokenSecret
                }
            };
            TwitterContext twitterContex = new TwitterContext(auth);

            var trends = (from trnd in twitterContex.Trends
                          where trnd.Type == TrendType.Place &&
                          trnd.WoeID == WoeId       // something other than 1
                          select trnd).ToList();

            Table.Columns[0].ColumnName = trends.First().Locations.First().Name;
            trends.ForEach(trnd => Table.Rows.Add(trnd.Name));
            return(Table);
        }
Пример #7
0
        private void Authorizing()
        {
            Receive <TwitterContext>(twitterContext =>
            {
                Become(() => Connected(twitterContext));
                Stash.UnstashAll();
            });

            ReceiveAny(_ => Stash.Stash());

            async Task <TwitterContext> GetTwitterContext()
            {
                var auth = new SingleUserAuthorizer
                {
                    CredentialStore = new SingleUserInMemoryCredentialStore
                    {
                        ConsumerKey       = _settings.Twitter.ConsumerKey,
                        ConsumerSecret    = _settings.Twitter.ConsumerSecret,
                        AccessToken       = _settings.Twitter.AccessTokenKey,
                        AccessTokenSecret = _settings.Twitter.AccessTokenSecret,
                    },
                };

                await auth.AuthorizeAsync();

                return(new TwitterContext(auth));
            }

            GetTwitterContext().PipeTo(Self);
        }
Пример #8
0
        //#########################################################################################################

        protected void AuthorizeContext()
        {
            var credential = new SingleUserInMemoryCredentialStore();

            try
            {
                using (StreamReader sr = new StreamReader(new FileStream("twitterKey.txt", FileMode.Open)))
                {
                    credential.ConsumerKey       = sr.ReadLine();
                    credential.ConsumerSecret    = sr.ReadLine();
                    credential.AccessToken       = sr.ReadLine();
                    credential.AccessTokenSecret = sr.ReadLine();


                    sr.Close();
                }
            }
            catch (FileNotFoundException)
            {
                Console.WriteLine("트위터 키 파일을 찾을 수 없습니다.");
            }
            catch (EndOfStreamException)
            {
                Console.WriteLine("트위터 키 파일을 읽을 수 없습니다.");
            }

            var auth = new SingleUserAuthorizer
            {
                CredentialStore = credential,
            };

            auth.AuthorizeAsync().Wait();

            m_twitterCtx = new TwitterContext(auth);
        }
Пример #9
0
        public static async Task ProcessTweet(
            [ServiceBusTrigger("scheduled-tweets", Connection = "ServiceBusConnection")] Message scheduledTweet,
            ILogger log)
        {
            var auth = new SingleUserAuthorizer
            {
                CredentialStore = new SingleUserInMemoryCredentialStore
                {
                    ConsumerKey       = Environment.GetEnvironmentVariable("TwitterAPIKey"),
                    ConsumerSecret    = Environment.GetEnvironmentVariable("TwitterAPISecret"),
                    AccessToken       = Environment.GetEnvironmentVariable("TwitterAccessToken"),
                    AccessTokenSecret = Environment.GetEnvironmentVariable("TwitterAccessTokenSecret")
                }
            };
            var twitterContext = new TwitterContext(auth);
            var tweetStatus    = Encoding.UTF8.GetString(scheduledTweet.Body);

            try
            {
                await twitterContext.TweetAsync(tweetStatus);
            }
            catch (Exception ex)
            {
                log.LogError(ex, $"{nameof(twitterContext.TweetAsync)} failed");
            }
        }
        // GET: Tweet
        public async Task <ActionResult> Index()
        {
            var auth = new SingleUserAuthorizer
            {
                CredentialStore = new InMemoryCredentialStore
                {
                    ConsumerKey      = "aQBh039RRPgFa5n2Sq7tCehvK",
                    ConsumerSecret   = "rWLAY9WOJGBdl1Bn9tvbFVV27iZeRKOoK2pqXkJBrXYkhv4i4l",
                    OAuthToken       = "1159055105699848192-yGJreGEXLHhHktPIQuHiCfaoobGfzE",
                    OAuthTokenSecret = "J0xqhBqZR1GisevDRxTxW7HrtnY1d8aecbukO7zBsOdVA"
                }
            };
            var context        = new TwitterContext(auth);
            var tweets         = new List <TweetViewModel>();
            var searchResponse =
                await
                    (from search in context.Search
                    where search.Type == SearchType.Search &&
                    search.Query == "kaas"
                    select search)
                .SingleOrDefaultAsync();

            if (searchResponse != null && searchResponse.Statuses != null)
            {
                searchResponse.Statuses.ForEach(tweet => tweets.Add(new TweetViewModel {
                    User = tweet.User.ScreenNameResponse, Tweet = tweet.Text
                }));
            }

            return(View(tweets));
        }
Пример #11
0
        void UpdateImage(Bitmap bitmap)
        {
            MemoryStream stream = new MemoryStream();

            bitmap.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
            stream.Close();
            var buffer = stream.GetBuffer();

            var lines = File.ReadAllLines("auth.txt");

            var auth = new SingleUserAuthorizer
            {
                Credentials = new SingleUserInMemoryCredentials
                {
                    ConsumerKey              = lines[0],
                    ConsumerSecret           = lines[1],
                    TwitterAccessToken       = lines[2],
                    TwitterAccessTokenSecret = lines[3]
                }
            };

            var context = new TwitterContext(auth);

            context.UpdateAccountImage(buffer, "ANTicGeneratorRocks.png", "png", true);
        }
        public async Task <Status> PostTweetAsync(UIAlertController alert)
        {
            try
            {
                var auth = new SingleUserAuthorizer
                {
                    CredentialStore = new SingleUserInMemoryCredentialStore
                    {
                        ConsumerKey       = TwitterAPICredentials.ConsumerApiKey,
                        ConsumerSecret    = TwitterAPICredentials.ConsumerApiSecret,
                        AccessToken       = TwitterAPICredentials.AccessToken,
                        AccessTokenSecret = TwitterAPICredentials.AccessTokenSecret,
                    }
                };
                var    ctx    = new TwitterContext(auth);
                string t      = alert.TextFields[0].Text;
                var    status = new Status();
                if (t != null && t != "")
                {
                    status = await ctx.TweetAsync(t);
                }

                return(status);
            }
            catch (Exception ex)
            {
                Console.Write("Task was canceled" + ex);
                return(null);
            }
        }
Пример #13
0
        public override async Task <Result> Connect(OAuthTokenModel token)
        {
            try
            {
                SingleUserAuthorizer singleUserAuthorizer = new SingleUserAuthorizer
                {
                    CredentialStore = new SingleUserInMemoryCredentialStore
                    {
                        ConsumerKey    = TwitterService.ClientID,
                        ConsumerSecret = ChannelSession.Services.Secrets.GetSecret("TwitterSecret"),

                        AccessToken       = token.accessToken,
                        AccessTokenSecret = token.refreshToken,

                        UserID     = ulong.Parse(token.clientID),
                        ScreenName = token.authorizationCode,
                    }
                };

                await singleUserAuthorizer.AuthorizeAsync();

                this.authorizer = singleUserAuthorizer;

                return(await this.InitializeInternal());
            }
            catch (Exception ex)
            {
                Logger.Log(ex);
                return(new Result(ex));
            }
        }
Пример #14
0
        internal static void QueryExpression()
        {
            SingleUserAuthorizer credentials = new SingleUserAuthorizer()
            {
                CredentialStore = new InMemoryCredentialStore()
                {
                    ConsumerKey      = "ConsumerKey",
                    ConsumerSecret   = "ConsumerSecret",
                    OAuthToken       = "OAuthToken",
                    OAuthTokenSecret = "OAuthTokenSecret"
                }
            };

            using (TwitterContext twitter = new TwitterContext(credentials))
            {
                IQueryable <Search>         source = twitter.Search; // Get source.
                IQueryable <List <Status> > query  = from search in source
                                                     where search.Type == SearchType.Search && search.Query == "LINQ"
                                                     orderby search.SearchMetaData.Count
                                                     select search.Statuses; // Define query.
                foreach (List <Status> search in query)                      // Execute query.
                {
                    foreach (Status status in search)
                    {
                        Trace.WriteLine(status.Text);
                    }
                }
            }
        }
Пример #15
0
        public TwitterImporter(Assessment assessment, SocialMediaStat socialMediaStat, String loggedInName)
        {
            try
            {
                _assessment      = assessment;
                _socialMediaStat = socialMediaStat;
                string name = _assessment.FacebookUsername.ToLower();
                if (name.Contains("https") || name.Contains("twitter.com") || name.Contains("http"))
                {
                    String[] splits = name.Split('/');
                    _twitterUsername = splits[splits.Length - 1];
                }

                _loggedInName = loggedInName;
                Database db          = new Database();
                API      token       = db.apis.Where(x => x.Name == "TwitterToken").FirstOrDefault();
                API      tokenSecret = db.apis.Where(x => x.Name == "TwitterTokenSecret").FirstOrDefault();
                var      authorizer  = new SingleUserAuthorizer
                {
                    CredentialStore = new InMemoryCredentialStore
                    {
                        ConsumerKey      = Properties.Resources._api_twitter_consumer_key,
                        ConsumerSecret   = Properties.Resources._api_twitter_consumer_secret,
                        OAuthToken       = token.Value,
                        OAuthTokenSecret = tokenSecret.Value
                    }
                };

                _twitterContext = new TwitterContext(authorizer);
            }
            catch (Exception e)
            {
            }
        }
Пример #16
0
            internal static void QueryExpression()
            {
                var credentials = new SingleUserAuthorizer()
                {
                    CredentialStore = new InMemoryCredentialStore()
                    {
                        ConsumerKey      = "YDgWzSxxBaLTT2eSWS6jLRQxd",
                        ConsumerSecret   = "XYZGuT04E93J2OtlJOEt7stnrM78dtPSJlQlL81C1O4JKoGbLP",
                        OAuthToken       = "881590855630508032-xeDEfO0prBkC6YGZKEkrzCSD0sOzbyW",
                        OAuthTokenSecret = "GsrpjXIlvfWPO3rMSI258AsDGKBHTgvVkkUxiVj1OAqFp"
                    }
                };

                using (var twitter = new TwitterContext(credentials))
                {
                    IQueryable <Search>         source = twitter.Search; // Get source.
                    IQueryable <List <Status> > query  = from search in source
                                                         where search.Type == SearchType.Search && search.Query == "LINQ"
                                                         orderby
                                                         search.SearchMetaData.Count
                                                         select search.Statuses; //Define query.
                    foreach (var search in query)                                // Execute query.
                    {
                        foreach (Status status in search)
                        {
                            Trace.WriteLine(status.Text);
                        }
                    }
                }
            }
Пример #17
0
        static void Main(string[] args)
        {
            var auth = new SingleUserAuthorizer
            {
                CredentialStore = new InMemoryCredentialStore
                {
                    ConsumerKey      = "Consumer Key",
                    ConsumerSecret   = "Consumer Key Secret",
                    OAuthToken       = "Access Token",
                    OAuthTokenSecret = "Access Token Secret"
                }
            };

            var twitterCtx = new TwitterContext(auth);

            Console.WriteLine("Enter the username whose tweets you want to see");
            var userInput = Console.ReadLine();

            Console.WriteLine("Loading Top 10 Tweets\n");

            var tweets = (from tweet in twitterCtx.Status
                          where tweet.Type == StatusType.User &&
                          tweet.ScreenName == userInput
                          select tweet).Take(10);

            foreach (var tweet in tweets)
            {
                Console.WriteLine($"{tweet.User.Name} - {tweet.Text.Trim()}\n");
            }
            Console.ReadLine();
        }
Пример #18
0
        private async static void GetTweets()
        {
            var auth = new SingleUserAuthorizer
            {
                CredentialStore = new SingleUserInMemoryCredentialStore
                {
                    ConsumerKey       = @"51WXplzDr3NHpU2aJlA8f8rmU",
                    ConsumerSecret    = @"UpT72NjZiWYXd9whjDES18Wc7dj4ngSEGv9yYn5Cg9UcnaoVm2",
                    AccessToken       = @"801059003791003648-aojSHBewwNwx4thqYnufEgj374q11mQ",
                    AccessTokenSecret = @"sFrfW9OhxsWuSvZjsvahNVUBRVg1hGnhpMllpAQ8TSmea"
                }
            };

            var twitterCtx = new TwitterContext(auth);

            var searchResponse =
                await
                    (from search in twitterCtx.Search
                    where search.Type == SearchType.Search &&
                    search.Query == "#andriitest2"
                    select search)
                .SingleOrDefaultAsync();

            if (searchResponse != null && searchResponse.Statuses != null)
            {
                searchResponse.Statuses.ForEach(tweet =>
                                                Console.WriteLine(
                                                    "User: {0}, Tweet: {1}",
                                                    tweet.User.ScreenNameResponse,
                                                    tweet.Text));
            }
        }
Пример #19
0
        public async Task <bool> Connect()
        {
            if (this.token != null)
            {
                try
                {
                    SingleUserAuthorizer singleUserAuth = new SingleUserAuthorizer
                    {
                        CredentialStore = new SingleUserInMemoryCredentialStore
                        {
                            ConsumerKey    = TwitterService.ClientID,
                            ConsumerSecret = ChannelSession.SecretManager.GetSecret("TwitterSecret"),

                            AccessToken       = this.token.accessToken,
                            AccessTokenSecret = this.token.refreshToken,

                            UserID     = ulong.Parse(this.token.clientID),
                            ScreenName = this.token.authorizationCode,
                        }
                    };
                    await singleUserAuth.AuthorizeAsync();

                    if (await this.InitializeInternal(singleUserAuth))
                    {
                        return(true);
                    }
                }
                catch (Exception ex) { Logger.Log(ex); }
            }

            try
            {
                PinAuthorizer pinAuth = new PinAuthorizer()
                {
                    CredentialStore = new InMemoryCredentialStore
                    {
                        ConsumerKey    = TwitterService.ClientID,
                        ConsumerSecret = ChannelSession.SecretManager.GetSecret("TwitterSecret"),
                    },
                    GoToTwitterAuthorization = pageLink => Process.Start(pageLink),
                    GetPin = () =>
                    {
                        while (string.IsNullOrEmpty(this.authPin))
                        {
                            Task.Delay(1000).Wait();
                        }
                        return(this.authPin);
                    }
                };

                await pinAuth.AuthorizeAsync();

                this.authPin = null;

                return(await this.InitializeInternal(pinAuth));
            }
            catch (Exception ex) { Logger.Log(ex); }

            return(false);
        }
Пример #20
0
        public static List <Status> GetTweets(int max)
        {
            const int MaxTweetsToReturn = 200;
            // get the auth
            var auth = new SingleUserAuthorizer
            {
                CredentialStore = new InMemoryCredentialStore
                {
                    ConsumerKey      = ConfigurationManager.AppSettings["consumerkey"],
                    ConsumerSecret   = ConfigurationManager.AppSettings["consumersecret"],
                    OAuthToken       = ConfigurationManager.AppSettings["accessToken"],
                    OAuthTokenSecret = ConfigurationManager.AppSettings["accessTokenSecret"]
                }
            };
            // get the context, query the last status
            var context = new TwitterContext(auth);
            var tweets  =
                from tw in context.Status
                where
                tw.Type == StatusType.User &&
                tw.Count == MaxTweetsToReturn
                select tw;

            // handle exceptions, twitter service might be down

            return(tweets.Take(max).ToList());
        }
Пример #21
0
        static ITwitterAuthorizer DoSingleUserAuth()
        {
            // validate that credentials are present
            //if (ConfigurationManager.AppSettings["twitterConsumerKey"].IsNullOrWhiteSpace() ||
            //    ConfigurationManager.AppSettings["twitterConsumerSecret"].IsNullOrWhiteSpace() ||
            //    ConfigurationManager.AppSettings["twitterOAuthToken"].IsNullOrWhiteSpace() ||
            //    ConfigurationManager.AppSettings["twitterAccessToken"].IsNullOrWhiteSpace())
            //{
            //    Console.WriteLine("You need to set credentials in App.config/appSettings. Visit http://dev.twitter.com/apps for more info.\n");
            //    Console.Write("Press any key to exit...");
            //    Console.ReadKey();
            //    return null;
            //}

            // configure the OAuth object
            var auth = new SingleUserAuthorizer
            {
                Credentials = new InMemoryCredentials
                {
                    ConsumerKey    = myIRC.Properties.Settings.Default.twitterConsumerKey,
                    ConsumerSecret = myIRC.Properties.Settings.Default.twitterConsumerSecret,
                    OAuthToken     = myIRC.Properties.Settings.Default.twitterOAuthToken,
                    AccessToken    = myIRC.Properties.Settings.Default.twitterAccessToken
                }
            };

            // Remember, do not call authorize - you don't need it.
            // auth.Authorize();
            return(auth);
        }
Пример #22
0
        private IEnumerable <string> GetTweetsForSubject(string topic)
        {
            var configurationPackage = this.context.CodePackageActivationContext.GetConfigurationPackageObject("Config");
            var accessToken          = configurationPackage.Settings.Sections["UserSettings"].Parameters["AccessToken"].Value;
            var accessTokenSecret    =
                configurationPackage.Settings.Sections["UserSettings"].Parameters["AccessTokenSecret"].Value;
            var consumerKey    = configurationPackage.Settings.Sections["UserSettings"].Parameters["ConsumerKey"].Value;
            var consumerSecret =
                configurationPackage.Settings.Sections["UserSettings"].Parameters["ConsumerSecret"].Value;

            var authorizer = new SingleUserAuthorizer
            {
                CredentialStore =
                    new SingleUserInMemoryCredentialStore
                {
                    ConsumerKey       = consumerKey,
                    ConsumerSecret    = consumerSecret,
                    AccessToken       = accessToken,
                    AccessTokenSecret = accessTokenSecret
                }
            };
            var twitterContext = new TwitterContext(authorizer);
            var searchResults  = Enumerable.SingleOrDefault(
                from search in twitterContext.Search
                where (search.Type == SearchType.Search) && (search.Query == topic) && (search.Count == 100)
                select search);

            if ((searchResults != null) && (searchResults.Statuses.Count > 0))
            {
                return(searchResults.Statuses.Select(status => status.Text));
            }

            return(Enumerable.Empty <string>());
        }
Пример #23
0
        protected override Task ProcessRecordAsync()
        {
            if (OAuthToken == null)
            {
                throw new ArgumentNullException(nameof(OAuthToken));
            }
            if (OAuthTokenSecret == null)
            {
                throw new ArgumentNullException(nameof(OAuthTokenSecret));
            }
            if (ConsumerKey == null)
            {
                throw new ArgumentNullException(nameof(ConsumerKey));
            }
            if (ConsumerSecret == null)
            {
                throw new ArgumentNullException(nameof(ConsumerSecret));
            }
            var memoryCredentialStore = new InMemoryCredentialStore {
                ConsumerKey      = ConsumerKey,
                ConsumerSecret   = ConsumerSecret,
                OAuthToken       = OAuthToken,
                OAuthTokenSecret = OAuthTokenSecret
            };
            var authorizer = new SingleUserAuthorizer {
                CredentialStore = memoryCredentialStore
            };

            return(authorizer.AuthorizeAsync().ToObservable()
                   .HandleErrors(this).Select(_ => new TwitterContext(authorizer))
                   .WriteObject(this)
                   .ToTask());
        }
Пример #24
0
        public async Task <Account> GetTwitterAccount(string userId, string screenName)
        {
            if (AnyTwitterAuthenticationSettingsAreNotSet())
            {
                return(null);
            }

            var authTwitter = new SingleUserAuthorizer
            {
                CredentialStore = new SingleUserInMemoryCredentialStore
                {
                    ConsumerKey      = twitterAuthenticationSettings.Value.ConsumerKey,
                    ConsumerSecret   = twitterAuthenticationSettings.Value.ConsumerSecret,
                    OAuthToken       = twitterAuthenticationSettings.Value.OAuthToken,
                    OAuthTokenSecret = twitterAuthenticationSettings.Value.OAuthSecret,
                    UserID           = ulong.Parse(userId),
                    ScreenName       = screenName
                }
            };

            await authTwitter.AuthorizeAsync();

            var twitterContext = new TwitterContext(authTwitter);

            //VERY important you explicitly keep the "== true" part of comparison. ReSharper will prompt you to remove this, and if it does, the query will not work
            var account = await(from acct in twitterContext.Account
                                where (acct.Type == AccountType.VerifyCredentials) && (acct.IncludeEmail == true)
                                select acct).SingleOrDefaultAsync();

            return(account);
        }
Пример #25
0
        /* Returns the latest nth (the tweet.Count) tweets in JSON. (with parameter of last shown tweet) */
        public async Task <List <TwitterStatus> > GetTweetsByHandleNMax(string handle, string maxIdStr, int pgSize = 10)
        {
            /* Gets the MaxID from the database. */
            ulong storedMaxId = 0;

            if (maxIdStr.Length > 0)
            {
                storedMaxId = GetMaxId(maxIdStr);
            }

            List <TwitterStatus> tweets  = null;
            AccountSetting       setting = _settingSrv.GetSettingByHandle(handle, Enums.AccountSettings.TwitterToken);

            if (setting != null)
            {
                var key = "twitter_" + setting.Value + "_pg_" + maxIdStr;

                if (!_cacheService.Contains(key))
                {
                    SingleUserAuthorizer auth    = SetAuthInformation();
                    TwitterContext       context = new TwitterContext(auth);

                    tweets =
                        await
                        (
                            from tweet in context.Status

                            where
                            tweet.Type == StatusType.User &&
                            tweet.ScreenName == setting.Value &&
                            tweet.Count == pgSize &&
                            tweet.MaxID == ulong.Parse(maxIdStr) - 1 &&
                            tweet.IncludeMyRetweet == false &&
                            tweet.IncludeRetweets == false

                            select mapTweets.Map <Status, TwitterStatus>(tweet)
                        )
                        .ToListAsync <TwitterStatus>();

                    /* Gets the statusID of the last tweet. */
                    decimal maxId = 0;
                    if (tweets.Count > 0)
                    {
                        maxId = tweets.LastOrDefault().StatusID;
                    }

                    DeleteMaxId();
                    InsertMaxId(maxId);

                    _cacheService.Add(key, tweets, new DateTimeOffset(DateTime.Now.AddDays(1)));
                }
                else
                {
                    tweets = _cacheService.Get <List <TwitterStatus> >(key);
                }
            }

            return(tweets);
        }
Пример #26
0
        /// <summary>
        /// Authorizes against Twitter.
        /// </summary>
        /// <returns></returns>
        private async Task <IAuthorizer> AuthorizeAsync()
        {
            ServiceEventSource.Current.ServiceMessage(this, "Twitter: Authorizing");
            try
            {
                #region string consumerKey, consumerSecret, accessToken, accessTokenSecret = ...

                string consumerKey       = Environment.GetEnvironmentVariable("TweeterConsumerKey");
                string consumerSecret    = Environment.GetEnvironmentVariable("TweeterConsumerSecret");
                string accessToken       = Environment.GetEnvironmentVariable("TwitterAccessToken");
                string accessTokenSecret = Environment.GetEnvironmentVariable("TwitterAccessTokenSecret");

                if (string.IsNullOrEmpty(consumerKey))
                {
                    var config = this.ServiceInitializationParameters
                                 .CodePackageActivationContext
                                 .GetConfigurationPackageObject("Config")
                                 .Settings.Sections["TwitterCredentials"]
                                 .Parameters;

                    consumerKey       = config["TweeterConsumerKey"]?.Value;
                    consumerSecret    = config["TweeterConsumerSecret"]?.Value;
                    accessToken       = config["TwitterAccessToken"]?.Value;
                    accessTokenSecret = config["TwitterAccessTokenSecret"]?.Value;
                }

                #endregion // string consumerKey, consumerSecret, accessToken, accessTokenSecret = ...

                var auth = new SingleUserAuthorizer()
                {
                    CredentialStore = new SingleUserInMemoryCredentialStore
                    {
                        ConsumerKey       = consumerKey,
                        ConsumerSecret    = consumerSecret,
                        AccessToken       = accessToken,
                        AccessTokenSecret = accessTokenSecret
                    }
                };

                await auth.AuthorizeAsync();

                ServiceEventSource.Current.ServiceMessage(this, "Twitter: Authorized");

                return(auth);
            }
            #region Exception Handling

            catch (Exception ex)
            {
                var id    = Constants.Singleton;
                var proxy = ActorProxy.Create <IImdbFaults>(id);
                await proxy.ReportError($"Twitter Authorization failed: {ex}");

                ServiceEventSource.Current.ServiceHostInitializationFailed(ex);
                throw;
            }

            #endregion // Exception Handling
        }
        private async Task DoSearchAsync(string query, byte count = 25)
        {
            //var response = await GetToken("[Get from twitter App area]", "[Get from twitter App area]");
            //var msg = response.Content;

            Tweets.Clear();
            wvStream.NavigateToString("");

            var auth = new SingleUserAuthorizer
            {
                CredentialStore = new SingleUserInMemoryCredentialStore
                {
                    ConsumerKey       = "",
                    ConsumerSecret    = "",
                    AccessToken       = "",
                    AccessTokenSecret = ""
                }
            };


            var twitterCtx = new TwitterContext(auth);


            var searchResponse =
                await
                    (from search in twitterCtx.Search
                    where search.Type == SearchType.Search &&
                    search.Query == "\"" + query + "\"" && search.Count == count
                    select search)
                .SingleOrDefaultAsync();


            if (searchResponse != null && searchResponse.Statuses != null)
            {
                foreach (var tweet in searchResponse.Statuses)
                {
                    var newTweet = new Tweet()
                    {
                        Name         = tweet.User.Name,
                        NameAt       = "@" + tweet.User.ScreenNameResponse,
                        TextRaw      = tweet.Text,
                        TextHtml     = ParseForHtml(tweet.Text),
                        TextDateTime = tweet.CreatedAt,
                        //AvatarUrl = tweet.User.ProfileImageUrl
                    };

                    if (!(newTweet.NameAt.Contains("@KState")))
                    {
                        continue;
                    }

                    Tweets.Add(newTweet);
                }
            }


            //using binding to populate webview UI
            HtmlBindingHelper.SetTag(wvStream, Tweets.ToList <Tweet>());
        }
        /// <summary>
        /// Get mentions in tweet
        /// </summary>
        /// <param name="input"></param>
        /// <param name="logger"></param>
        /// <returns></returns>
        public static GetTweetTaskOutput getMentions(GetTweetsTaskInput input, ILogger logger)
        {
            logger.LogInformation($"Getting mention. Method {nameof(getMentions)}, Time: {DateTime.Now}");

            GetTweetTaskOutput output = new GetTweetTaskOutput()
            {
                IsTweetAvailable = false
            };

            try
            {
                var auth = new SingleUserAuthorizer()
                {
                    CredentialStore = new SingleUserInMemoryCredentialStore()
                    {
                        ConsumerKey       = input.ConsumerKey,
                        ConsumerSecret    = input.ConsumerSecret,
                        AccessToken       = input.AccessToken,
                        AccessTokenSecret = input.AccessTokenSecret
                    },
                };

                auth.AuthorizeAsync().Wait();
                var twitterCtx = new TwitterContext(auth);

                //var tweets =
                //     await
                //     (from tweet in twitterCtx.Status
                //      where tweet.Type == StatusType.Mentions &&
                //      tweet.Count == input.Count
                //      select tweet)
                //     .ToListAsync();

                var tweets = (from t in twitterCtx.Status
                              where t.Type == StatusType.Mentions &&
                              t.Count == input.Count
                              select t).ToList();

                foreach (var tweet in tweets)
                {
                    output.LatestTweetId = tweet.StatusID.ToString();

                    logger.LogInformation($"Mention Id: {tweet.StatusID}");

                    output.IsTweetAvailable = true;
                }

                logger.LogInformation($"Exit method {nameof(getMentions)}");

                //Task.Delay(15000).Wait();
            }
            catch (Exception ex)
            {
                logger.LogWarning($"{ex.Message}");
            }

            return(output);
        }
Пример #29
0
        public TwitterClient(SingleUserInMemoryCredentialStore credentials)
        {
            var auth = new SingleUserAuthorizer
            {
                CredentialStore = credentials
            };

            context = new TwitterContext(auth);
        }
Пример #30
0
        /// <summary>
        /// 搜索本人的TIMELINE
        /// https://github.com/JoeMayo/LinqToTwitter/wiki/Querying-the-Home-Timeline
        /// </summary>
        /// <param name="authuser"></param>
        /// <param name="mintid"></param>
        /// <param name="retid"></param>
        /// <param name="maxcount"></param>
        /// <returns></returns>
        public static List <Status> GetHomeTL(SingleUserAuthorizer authuser, ulong mintid, out ulong retid, int maxcount = 500)
        {
            if (mintid < MINTWITTERID)
            {
                mintid = MINTWITTERID;
            }
            var twitterCtx = AuthTwitterContext(authuser);

            retid = mintid;

            var rslist =
                (from tweet in twitterCtx.Status
                 where tweet.Type == StatusType.Home &&
                 tweet.Count == 200 &&
                 tweet.SinceID == mintid
                 select tweet)
                .ToList();


            while (rslist.Count < maxcount && rslist.Count > 0)
            {
                if (rslist.Min(st => st.StatusID) <= mintid)
                {
                    break;
                }

                retid = rslist.Max(st => st.StatusID);

                ulong maxid = rslist.Min(st => st.StatusID) - 1;

                Thread.Sleep(10 * 1000);

                var searchResponse =
                    (from tweet in twitterCtx.Status
                     where tweet.Type == StatusType.Home &&
                     tweet.Count == 200 &&
                     tweet.SinceID == mintid &&
                     tweet.MaxID == maxid
                     select tweet)
                    .ToList();


                if (searchResponse != null && searchResponse.Count > 0)
                {
                    rslist.AddRange(searchResponse);
                }
                else
                {
                    break;
                }
            }



            return(rslist);
        }