Esempio n. 1
0
        public void Autorize()
        {
            SettingsWorker settingsWorker = new SettingsWorker("Settings.ini");

            settingsWorker.LoadSettings();

            Auth.SetUserCredentials(settingsWorker.settings.consumerKey,
                                    settingsWorker.settings.consumerSecret,
                                    settingsWorker.settings.userAccessToken,
                                    settingsWorker.settings.userAccessSecret);

            if (User.GetAuthenticatedUser() == null) //invalid Credentials
            {
                try
                {
                    var appCredentials = new Tweetinvi.Models.TwitterCredentials(
                        settingsWorker.settings.consumerKey,
                        settingsWorker.settings.consumerSecret);
                    var authenticationContext = AuthFlow.InitAuthentication(appCredentials);
                    Process.Start(authenticationContext.AuthorizationURL);
                    var pinCode        = Console.ReadLine();
                    var newCredentials = AuthFlow.CreateCredentialsFromVerifierCode(pinCode, authenticationContext);
                    Auth.SetCredentials(newCredentials);
                    settingsWorker.settings.userAccessToken  = newCredentials.AccessToken;
                    settingsWorker.settings.userAccessSecret = newCredentials.AccessTokenSecret;
                    settingsWorker.SaveSettings();
                }
                catch
                {
                    throw new Exception("Autorization Failed!");
                }
            }
        }
        private static void InitTwitterCredentials()
        {
            var creds = new Tweetinvi.Models.TwitterCredentials(AccessToken, AccessTokenSecret, ConsumerKey, ConsumerSecret);

            Auth.SetUserCredentials(ConsumerKey, ConsumerSecret, AccessToken, AccessTokenSecret);
            Auth.ApplicationCredentials = creds;
        }
Esempio n. 3
0
        public static void GetListOfSubscriptions()
        {
            Tweetinvi.Models.TwitterCredentials tempCredentials = new Tweetinvi.Models.TwitterCredentials(Tweetinvi.Auth.Credentials.ConsumerKey, Tweetinvi.Auth.Credentials.ConsumerSecret);
            Tweetinvi.Auth.InitializeApplicationOnlyCredentials(tempCredentials, true);

            Tweetinvi.Core.Public.Models.Authentication.ConsumerOnlyCredentials credentials = new Tweetinvi.Core.Public.Models.Authentication.ConsumerOnlyCredentials(tempCredentials.ConsumerKey, tempCredentials.ConsumerSecret)
            {
                ApplicationOnlyBearerToken = tempCredentials.ApplicationOnlyBearerToken
            };

            var task = Webhooks.GetListOfSubscriptionsAsync(webHookEnvironmentName, credentials);

            task.Wait();
        }
        public async Task <ActionResult> Create(CreateViewModel Model, string Username, string Network)
        {
            ViewData["NetworkOptions"] = NetworkOptions;
            using (SqlConnection dbConn = new SqlConnection())
            {
                dbConn.ConnectionString = Configuration.DB;
                //dbConn.ConnectionString = ConfigurationManager.ConnectionStrings["Bloometa_DB"].ConnectionString;
                dbConn.Open();

                SqlCommand RetrieveAccount =
                    new SqlCommand(@"
                        SELECT TOP(1) [AccID]
                        FROM UAccounts
                        WHERE
                            [Username] = @Username
                            AND [Network] = @Network
                            AND [Removed] = 0", dbConn);
                RetrieveAccount.Parameters.Add("@Username", SqlDbType.NVarChar).Value = Username;
                RetrieveAccount.Parameters.Add("@Network", SqlDbType.NVarChar).Value  = Network.ToLower();

                using (SqlDataReader results = RetrieveAccount.ExecuteReader())
                {
                    if (results.HasRows)
                    {
                        while (results.Read())
                        {
                            return(RedirectToAction("Account", new { ID = results["AccID"].ToString() }));
                        }
                    }
                }

                int    FollowCount, FollowerCount;
                string UserFullName, UserID;

                // Validate the new user exists
                switch (Network.ToLower())
                {
                case "instagram":
                    HttpClient netClient = new HttpClient();
                    netClient.DefaultRequestHeaders.Accept.Clear();
                    netClient.DefaultRequestHeaders.Accept
                    .Add(new MediaTypeWithQualityHeaderValue("application/json"));

                    HttpResponseMessage netResponse = await netClient.GetAsync(new Uri(String.Format("https://instagram.com/{0}/?__a=1", Username)));

                    if (netResponse.IsSuccessStatusCode)
                    {
                        JToken netData = JObject.Parse(await netResponse.Content.ReadAsStringAsync()).SelectToken("user");

                        FollowCount = Int32.Parse((string)netData.SelectToken("follows")
                                                  .SelectToken("count"));
                        FollowerCount = Int32.Parse((string)netData.SelectToken("followed_by")
                                                    .SelectToken("count"));

                        Username     = (string)netData.SelectToken("username");
                        UserFullName = (string)netData.SelectToken("full_name");
                        UserID       = (string)netData.SelectToken("id");
                    }
                    else
                    {
                        if (netResponse.StatusCode == HttpStatusCode.NotFound)
                        {
                            ViewData["AccResponse"] = "Could not find a user by that name.";
                        }
                        else
                        {
                            ViewData["AccResponse"] = "An unknown error occurred while connecting to Instagram.";
                        }

                        return(View(Model));
                    }
                    break;

                case "twitter":
                    var TWCredentials = new Tweetinvi.Models.TwitterCredentials(
                        Configuration.TwitterKey,
                        Configuration.TwitterSecret,
                        Configuration.TwitterAccessKey,
                        Configuration.TwitterAccessSecret);

                    Tweetinvi.Models.IUser User;
                    try
                    {
                        User = Tweetinvi.Auth.ExecuteOperationWithCredentials(TWCredentials, () =>
                        {
                            return(Tweetinvi.User.GetUserFromScreenName(Username));
                        });

                        FollowCount   = User.FriendsCount;
                        FollowerCount = User.FollowersCount;

                        Username     = User.ScreenName;
                        UserFullName = User.Name;
                        UserID       = String.Format("{0}", User.Id);
                    }
                    catch
                    {
                        ViewData["AccResponse"] = "Could not find a user by that name.";
                        return(View(Model));
                    }
                    break;

                default:
                    ViewData["AccResponse"] = "Invalid network selected.";
                    return(View(Model));
                }

                SqlCommand CheckAccountID =
                    new SqlCommand(@"
                        SELECT TOP(1) [AccID]
                        FROM UAccounts
                        WHERE
                            [UserID] = @UserID
                            AND [Network] = @Network
                            AND [Removed] = 0", dbConn);
                CheckAccountID.Parameters.Add("@UserID", SqlDbType.NVarChar).Value  = UserID;
                CheckAccountID.Parameters.Add("@Network", SqlDbType.NVarChar).Value = Network.ToLower();

                string AccID = null;
                using (SqlDataReader results = CheckAccountID.ExecuteReader())
                {
                    // If the users ID already exists, they probably changed their
                    // handle, so just update that here so the historical tracking
                    // data remains available
                    if (results.HasRows)
                    {
                        while (results.Read())
                        {
                            AccID = results["AccID"].ToString();
                        }
                    }
                }

                if (!String.IsNullOrEmpty(AccID))
                {
                    using (SqlCommand UpdateAccount = new SqlCommand(@"
                        UPDATE UAccounts
                        SET
                            Username = @Username,
                            FullName = @FullName
                        WHERE
                            AccID = @AccID
                            AND [Removed] = 0", dbConn))
                    {
                        UpdateAccount.Parameters.Add("@AccID", SqlDbType.UniqueIdentifier).Value = new Guid(AccID);
                        UpdateAccount.Parameters.Add("@Username", SqlDbType.NVarChar).Value      = Username;
                        UpdateAccount.Parameters.Add("@FullName", SqlDbType.NVarChar).Value      =
                            String.IsNullOrEmpty(UserFullName) ? Username : UserFullName;

                        UpdateAccount.ExecuteNonQuery();

                        return(RedirectToAction("Account", new { ID = AccID }));
                    }
                }

                // Everything is all good so far! Add the account to DB to be tracked
                using (SqlCommand InsertAccount = new SqlCommand(@"
                    INSERT INTO UAccounts
                        ([Network], [Username], [UserID], [FullName])
                        OUTPUT INSERTED.[AccID]
                    VALUES
                        (@Network, @Username, @UserID, @FullName)", dbConn))
                {
                    InsertAccount.Parameters.Add("@Network", SqlDbType.NVarChar).Value  = Network.ToLower();
                    InsertAccount.Parameters.Add("@Username", SqlDbType.NVarChar).Value = Username;
                    InsertAccount.Parameters.Add("@UserID", SqlDbType.NVarChar).Value   = UserID;
                    InsertAccount.Parameters.Add("@FullName", SqlDbType.NVarChar).Value =
                        String.IsNullOrEmpty(UserFullName) ? Username : UserFullName;

                    using (SqlDataReader results = InsertAccount.ExecuteReader())
                    {
                        if (results.HasRows)
                        {
                            while (results.Read())
                            {
                                AccID = results["AccID"].ToString();
                            }
                        }
                        else
                        {
                            ViewData["AccResponse"] = "An error occurred while writing the data.";
                            return(View(Model));
                        }
                    }

                    // May as well insert the data we got earlier, rather than waste a net request.
                    // No need to manually enqueue, in this case.
                    if (!String.IsNullOrEmpty(AccID))
                    {
                        using (SqlCommand InsertDataRow = new SqlCommand(@"
                            INSERT INTO UData
                                ([AccID], [FollowCount], [FollowerCount])
                            VALUES
                                (@AccID, @FollowCount, @FollowerCount)", dbConn))
                        {
                            InsertDataRow.Parameters.Add("@AccID", SqlDbType.UniqueIdentifier).Value = new Guid(AccID);
                            InsertDataRow.Parameters.Add("@FollowCount", SqlDbType.Int).Value        = FollowCount;
                            InsertDataRow.Parameters.Add("@FollowerCount", SqlDbType.Int).Value      = FollowerCount;

                            InsertDataRow.ExecuteNonQuery();

                            return(RedirectToAction("Account", new { ID = AccID }));
                        }
                    }
                    else
                    {
                        ViewData["AccResponse"] = "An error occurred while writing the data.";
                        return(View(Model));
                    }
                }
            }
        }