public static ConsumerOnlyCredentials LoadCredentials(
     this ConsumerOnlyCredentials credentials,
     TwitterApiConfig config
     ) => new ConsumerOnlyCredentials(config.ConsumerKey, config.ConsumerSecret)
 {
     BearerToken = config.BearerToken
 };
Ejemplo n.º 2
0
        public Task <ITwitterResult <IWebhookEnvironmentSubscriptionsDTO> > GetAccountActivitySubscriptionsAsync(IGetAccountActivitySubscriptionsParameters parameters, ITwitterRequest request)
        {
            var consumerCredentials = new ConsumerOnlyCredentials(request.Query.TwitterCredentials);

            request.Query.Url                = _accountActivityQueryGenerator.GetAccountActivitySubscriptionsQuery(parameters);
            request.Query.HttpMethod         = HttpMethod.GET;
            request.Query.TwitterCredentials = new TwitterCredentials(consumerCredentials);

            return(_twitterAccessor.ExecuteRequestAsync <IWebhookEnvironmentSubscriptionsDTO>(request));
        }
Ejemplo n.º 3
0
        public Task <ITwitterResult> UnsubscribeFromAccountActivityAsync(IUnsubscribeFromAccountActivityParameters parameters, ITwitterRequest request)
        {
            var consumerCredentials = new ConsumerOnlyCredentials(request.Query.TwitterCredentials);

            request.Query.Url                = _accountActivityQueryGenerator.GetUnsubscribeToAccountActivityQuery(parameters);
            request.Query.HttpMethod         = HttpMethod.DELETE;
            request.Query.TwitterCredentials = new TwitterCredentials(consumerCredentials);

            return(_twitterAccessor.ExecuteRequestAsync(request));
        }
Ejemplo n.º 4
0
        private async Task <ITwitterClient> CreateClient()
        {
            var consumerKey             = Configuration["consumerKey"];
            var consumerSecret          = Configuration["consumerSecret"];
            var consumerOnlyCredentials = new ConsumerOnlyCredentials(consumerKey, consumerSecret);
            var appClientWithoutBearer  = new TwitterClient(consumerOnlyCredentials);

            var bearerToken = await appClientWithoutBearer.Auth.CreateBearerTokenAsync();

            var appCredentials = new ConsumerOnlyCredentials(consumerKey, consumerSecret, bearerToken);

            return(new TwitterClient(appCredentials));
        }
Ejemplo n.º 5
0
        static void Main(string[] args)
        {
            Sync.ExecuteTaskAsync(() =>
            {
                var consumerOnlyCredentials = new ConsumerOnlyCredentials("CONSUMER_TOKEN", "CONSUMER_SECRET")
                {
                    ApplicationOnlyBearerToken = "BEARER_TOKEN"
                };

                IWebhookEnvironmentDTO[] webhookEnvironments = Webhooks.GetAllWebhookEnvironmentsAsync(consumerOnlyCredentials).Result;

                webhookEnvironments.ForEach(env =>
                {
                    Console.WriteLine(env.Name);
                });
            }).Wait();
        }
Ejemplo n.º 6
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            var consumerOnlyCredentials = new ConsumerOnlyCredentials("CONSUMER_TOKEN", "CONSUMER_SECRET")
            {
                ApplicationOnlyBearerToken = "BEARER_TOKEN"
            };

            WebhookServerInitialization(app, consumerOnlyCredentials);
            RegisterAccountActivities(consumerOnlyCredentials).Wait();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseMvc();
        }
        public static async Task Launch(string TwitterConsumerKey, string TwitterConsumerSecret)
        {
            var creds      = new ConsumerOnlyCredentials(TwitterConsumerKey, TwitterConsumerSecret);
            var tempClient = new TwitterClient(creds);

            // Get OAuth Bearer token
            var bearerToken = await tempClient.Auth.CreateBearerTokenAsync();

            creds = new ConsumerOnlyCredentials(TwitterConsumerKey, TwitterConsumerSecret)
            {
                BearerToken = bearerToken
            };

            appClient = new TwitterClient(creds);

            var tweetStream = appClient.StreamsV2.CreateSampleStream();

            await StartListening(tweetStream);
        }
        /// <summary>
        ///     Uses credentials in IConfiguration to build an authenticated Twitter client.
        /// </summary>
        /// <returns></returns>
        public async Task <TwitterClient> GetAuthenticatedTwitterClient()
        {
            _logger.LogDebug("Providing credentials");

            var tempClient = new TwitterClient(new ConsumerOnlyCredentials(
                                                   _configuration["CONSUMER_KEY"],
                                                   _configuration["CONSUMER_SECRET"]));

            var bearer = await tempClient.Auth.CreateBearerTokenAsync();

            var appCreds = new ConsumerOnlyCredentials(new ConsumerOnlyCredentials(
                                                           _configuration["CONSUMER_KEY"],
                                                           _configuration["CONSUMER_SECRET"]))
            {
                BearerToken = bearer
            };

            return(new TwitterClient(appCreds));
        }
        public void Credentials()
        {
            if (!EndToEndTestConfig.ShouldRunEndToEndTests)
            {
                return;
            }

            var twitterCredentials = new TwitterCredentials("A", "B", "C", "D")
            {
                BearerToken = "E"
            };

            var consumerCreds = new ConsumerOnlyCredentials("A2", "B2", "E2");

            TestSerializer <ITwitterCredentials, ITwitterCredentials>(twitterCredentials, creds =>
            {
                Assert.Equal(twitterCredentials.AccessToken, creds.AccessToken);
                Assert.Equal(twitterCredentials.ConsumerKey, creds.ConsumerKey);
                Assert.Equal(twitterCredentials.BearerToken, creds.BearerToken);
            });

            TestSerializer <ITwitterCredentials, IConsumerOnlyCredentials>(twitterCredentials, creds =>
            {
                Assert.Equal(twitterCredentials.ConsumerKey, creds.ConsumerKey);
                Assert.Equal(twitterCredentials.BearerToken, creds.BearerToken);
            });

            TestSerializer <IConsumerOnlyCredentials, IConsumerOnlyCredentials>(consumerCreds, creds =>
            {
                Assert.Equal(consumerCreds.ConsumerKey, creds.ConsumerKey);
                Assert.Equal(consumerCreds.ConsumerSecret, creds.ConsumerSecret);
                Assert.Equal(consumerCreds.BearerToken, creds.BearerToken);
            });

            TestSerializer <IConsumerOnlyCredentials, ITwitterCredentials>(consumerCreds, creds =>
            {
                Assert.Equal(consumerCreds.ConsumerKey, creds.ConsumerKey);
                Assert.Equal(consumerCreds.ConsumerSecret, creds.ConsumerSecret);
                Assert.Equal(consumerCreds.BearerToken, creds.BearerToken);
            });
        }
Ejemplo n.º 10
0
        public static async Task StartTwitterAPI(bool skip)
        {
            TwitterAPIDAO dao = new TwitterAPIDAO();

            /*
             * Since this is an app that does not need to store tweets/stats, we recreate the database each time.
             * Normally, you would not build/maintain the database in code (at least with .Net)
             *
             */

            if (!skip)
            {
                dao.BuildSQliteDatabase();
            }

            var appCredentials = new ConsumerOnlyCredentials(System.Configuration.ConfigurationManager.AppSettings["TwitterKey"], System.Configuration.ConfigurationManager.AppSettings["TwitterSecret"])
            {
                BearerToken = System.Configuration.ConfigurationManager.AppSettings["TwitterBearerToken"]
            };

            var appClient = new TwitterClient(appCredentials);

            /**
             * This is looping through the tweets automatically. As long as the application is running. tweets will be saved to a sqllite table.
             * The only time I have seen this fail is if I put a breakpoint within the receiver. This causes the connection to twitter to be severed.
             * Also, since this is running in a seperate process, there is no blocking the other parts of the app!
             *
             *
             *
             */
            var sampleStreamV2 = appClient.StreamsV2.CreateSampleStream();

            sampleStreamV2.TweetReceived += (sender, args) =>
            {
                bool         hasUrl   = false;
                bool         hasImage = false;
                bool         hasEmoji = false;
                RegexPattern pattern  = new RegexPattern();
                var          emojis   = pattern.emoji.Matches(args.Tweet.Text);
                foreach (System.Text.RegularExpressions.Match emj in emojis)
                {
                    hasEmoji = true;
                    string text = "INSERT INTO emojis(value) VALUES(@value)";
                    List <SQLiteParameter> InnerParamList = new List <SQLiteParameter>
                    {
                        dao.NewParameter("value", emj.Value)
                    };
                    dao.RunSQLiteCommand(text, InnerParamList);
                }


                if (args.Tweet.Entities != null)
                {
                    if (args.Tweet.Entities.Hashtags != null && args.Tweet.Entities.Hashtags.Count() > 0)
                    {
                        foreach (Tweetinvi.Models.V2.HashtagV2 hashtag in args.Tweet.Entities.Hashtags)
                        {
                            List <SQLiteParameter> InnerParamList = new List <SQLiteParameter>
                            {
                                dao.NewParameter("tag", hashtag.Tag)
                            };
                            string text = "INSERT INTO hashtags(tag) VALUES(@tag)";
                            dao.RunSQLiteCommand(text, InnerParamList);
                        }
                    }

                    if (args.Tweet.Entities.Urls != null && args.Tweet.Entities.Urls.Count() > 0)
                    {
                        hasUrl = true;
                        foreach (Tweetinvi.Models.V2.UrlV2 urlEntity in args.Tweet.Entities.Urls)
                        {
                            // No need to run string checkers we have already set hasImage.
                            if (!hasImage && (urlEntity.DisplayUrl.Contains("pic.twitter") || urlEntity.DisplayUrl.Contains("instagram")))
                            {
                                hasImage = true;
                            }

                            Uri tweetURL = new Uri(urlEntity.ExpandedUrl);
                            List <SQLiteParameter> InnerParamList = new List <SQLiteParameter>
                            {
                                dao.NewParameter("url", urlEntity.DisplayUrl),
                                dao.NewParameter("hostname", tweetURL.Host)
                            };
                            string text = "INSERT INTO urls(url, hostname) VALUES(@url, @hostname)";
                            dao.RunSQLiteCommand(text, InnerParamList);
                        }
                    }

                    if (args.Tweet.Entities.Mentions != null && args.Tweet.Entities.Mentions.Count() > 0)
                    {
                        foreach (Tweetinvi.Models.V2.UserMentionV2 mention in args.Tweet.Entities.Mentions)
                        {
                            List <SQLiteParameter> InnerParamList = new List <SQLiteParameter>
                            {
                                dao.NewParameter("name", mention.Username)
                            };
                            string text = "INSERT INTO mentions(name) VALUES(@name)";
                            dao.RunSQLiteCommand(text, InnerParamList);
                        }
                    }
                }


                List <SQLiteParameter> ParamList = new List <SQLiteParameter>
                {
                    dao.NewParameter("text", args.Tweet.Text),
                    dao.NewParameter("date", args.Tweet.CreatedAt.ToUnixTimeSeconds()),
                    dao.NewParameter("lang", args.Tweet.Lang),
                    dao.NewParameter("source", args.Tweet.Source),
                    dao.NewParameter("like", args.Tweet.PublicMetrics.LikeCount),
                    dao.NewParameter("retweet", args.Tweet.PublicMetrics.RetweetCount),
                    dao.NewParameter("hasUrl", hasUrl),
                    dao.NewParameter("hasImage", hasImage),
                    dao.NewParameter("hasEmoji", hasEmoji)
                };
                string CommandText = "INSERT INTO tweets(text, date, lang, source, like, retweet, hasUrl, hasImage, hasEmoji) VALUES(@text, @date, @lang, @source, @like, @reTweet, @hasUrl, @hasImage, @hasEmoji)";
                dao.RunSQLiteCommand(CommandText, ParamList);
            };

            await sampleStreamV2.StartAsync();
        }