private async Task SetViewLinkedApps(DropboxTeamClient client)
        {
            /* sample data */
            int totalUserLinkedApps = 8;

            if (AccountLinked())
            {
                var linkedAppsResult = await client.Team.LinkedAppsListTeamLinkedAppsAsync();

                /* retrieve distinct set of linked app names */
                HashSet <string> linkedAppNames = new HashSet <string>();
                foreach (MemberLinkedApps appData in linkedAppsResult.Apps)
                {
                    foreach (var memberLinkedApp in appData.LinkedApiApps)
                    {
                        if (memberLinkedApp.Linked != null)
                        {
                            linkedAppNames.Add(memberLinkedApp.AppName);
                        }
                    }
                }
                totalUserLinkedApps = linkedAppNames.Count;
            }

            ViewBag.TotalUserLinkedApps = totalUserLinkedApps;
        }
        private async Task SetViewActivityData(DropboxTeamClient client)
        {
            /* sample data */
            ulong numDailyActives        = 17;
            ulong numWeeklySharedFolders = 4;
            var   activeUsers            = new List <ulong?> {
                6, 10, 4, 5, 8, 2, 9
            };

            if (AccountLinked())
            {
                var activityInfo = await client.Team.ReportsGetActivityAsync();

                activeUsers = (List <ulong?>)activityInfo.ActiveUsers1Day;
                /* grab the last element in the array, which contains numDailyActives for today */
                numDailyActives = activeUsers.Last() == null ? 0 : (ulong)activeUsers.Last();

                var sharedFoldersWeekly = (List <ulong?>)activityInfo.ActiveSharedFolders7Day;
                /* grab the last element in the array, which contains numWeeklySharedFolders for this week */
                numWeeklySharedFolders = sharedFoldersWeekly.Last() == null ? 0 : (ulong)sharedFoldersWeekly.Last();
            }

            JavaScriptSerializer serializer = new JavaScriptSerializer();

            ViewBag.NumDailyActives        = numDailyActives;
            ViewBag.NumWeeklySharedFolders = numWeeklySharedFolders;
            ViewBag.ActiveUsers            = serializer.Serialize(activeUsers);
        }
示例#3
0
        static async Task <TeamMemberAccountModel> MapTeamMemberAccountDetail(DropboxTeamClient teamClient, string memberId)
        {
            if (_debug)
            {
                Console.WriteLine("-------------------------------------");
                Console.WriteLine("MapTeamMemberAccountDetail() called...");
            }

            TeamMemberAccountModel teamMemberAccount = null;

            using (DropboxClient userClient = teamClient.AsMember(memberId))
            {
                FullAccount fullAccount = await userClient.Users.GetCurrentAccountAsync();

                teamMemberAccount = new TeamMemberAccountModel()
                {
                    Email     = fullAccount.Email,
                    LastName  = CheckValueForComma(fullAccount.Name.Surname),
                    FirstName = CheckValueForComma(fullAccount.Name.GivenName)
                };
            }

            if (_debug)
            {
                Console.WriteLine("----------------");
                Console.WriteLine($"Email              : {teamMemberAccount.Email}");
                Console.WriteLine($"LastName           : {teamMemberAccount.LastName}");
                Console.WriteLine($"FirstName          : {teamMemberAccount.FirstName}");
                Console.WriteLine($"SharedFolders.Count: going to figure that out next...");
            }

            return(teamMemberAccount);
        }
示例#4
0
        static async Task <List <SharedFolderModel> > GetTeamMemberShares(DropboxTeamClient teamClient, string memberId)
        {
            if (_debug)
            {
                Console.WriteLine("-------------------------------------");
                Console.WriteLine("GetTeamMemberShares() called...");
            }

            // initialize here so sharedFolders in scope of return statement
            List <SharedFolderModel> sharedFolders = new List <SharedFolderModel>();

            _sharedFoldersListCount = 0;

            using (DropboxClient userClient = teamClient.AsMember(memberId))
            {
                ListFoldersResult sharedFoldersList = await userClient.Sharing.ListFoldersAsync();

                sharedFolders = await ProcessSharedFoldersList(userClient, sharedFoldersList);

                if (_debug)
                {
                    // before ...ContinueAsync() count
                    Console.WriteLine("----------------");
                    Console.WriteLine($"Total shared folders count: {_sharedFoldersListCount}");
                    Console.WriteLine($"Any more shared folders?  sharedFoldersList.Cursor: {sharedFoldersList.Cursor}");
                }

                // iterate over pages from userClient.Sharing.ListFoldersContinueAsync if list.Cursor is set
                while (sharedFoldersList.Cursor != null)
                {
                    if (_debug)
                    {
                        Console.WriteLine("----------------");
                        Console.WriteLine($"sharedFoldersList.Cursor not null: {sharedFoldersList.Cursor}");
                        Console.WriteLine("Preparing to continue...");
                    }

                    // sharedFoldersList.Cursor flips to null once all folders are listed via ListFoldersContinueAsync()
                    sharedFoldersList = await userClient.Sharing.ListFoldersContinueAsync(sharedFoldersList.Cursor);

                    List <SharedFolderModel> sharedFoldersCursorList = await ProcessSharedFoldersList(userClient, sharedFoldersList);

                    sharedFolders.AddRange(sharedFoldersCursorList);

                    if (_debug)
                    {
                        // after ...ContinueAsync() count
                        Console.WriteLine("----------------");
                        Console.WriteLine($"Total shared folders count with continue: {_sharedFoldersListCount}");
                    }
                }
            }

            return(sharedFolders);
        }
        // GET: /Home
        public async Task <ActionResult> IndexAsync()
        {
            DropboxTeamClient teamClient = GetTeamClient();

            /* run asynchronous data retrieval synchronously */
            await SetViewTeamInfo(teamClient);
            await SetViewLinkedApps(teamClient);
            await SetViewActivityData(teamClient);
            await SetViewMemberList(teamClient);

            return(View());
        }
        private async Task SetViewMemberList(DropboxTeamClient client)
        {
            /* sample data */
            var memListResult = new MembersListResult(GetMemberListSampleData(), "", true);

            if (AccountLinked())
            {
                memListResult = await client.Team.MembersListAsync();
            }

            ViewBag.TeamMembers = memListResult.Members;
        }
        /// <summary>
        /// List all members in the team.
        /// </summary>
        /// <param name="client">The Dropbox team client.</param>
        /// <returns>The result from the MembersListAsync call.</returns>
        private async Task <MembersListResult> ListTeamMembers(DropboxTeamClient client)
        {
            var members = await client.Team.MembersListAsync();

            foreach (var member in members.Members)
            {
                Console.WriteLine("Member id    : {0}", member.Profile.TeamMemberId);
                Console.WriteLine("Name         : {0}", member.Profile.Name);
                Console.WriteLine("Email        : {0}", member.Profile.Email);
            }

            return(members);
        }
        public static void Initialize(TestContext context)
        {
            UserAccessToken = context.Properties["userAccessToken"].ToString();
            Client          = new DropboxClient(UserAccessToken);

            var teamToken = context.Properties["teamAccessToken"].ToString();

            TeamClient = new DropboxTeamClient(teamToken);

            var appKey    = context.Properties["appKey"].ToString();
            var appSecret = context.Properties["appSecret"].ToString();

            AppClient = new DropboxAppClient(appKey, appSecret);
        }
示例#9
0
        static async Task UpdateTeamMemberAccountList(DropboxTeamClient teamClient, string teamMemberId)
        {
            if (_debug)
            {
                Console.WriteLine("-------------------------------------");
                Console.WriteLine("UpdateTeamMemberAccountList() called...");
            }

            TeamMemberAccountModel teamMemberAccount = await GetTeamMemberAccountDetails(teamClient, teamMemberId);

            OutputTeamMemberCsv(teamMemberAccount);

            _teamMemberAccounts.Add(teamMemberAccount);
        }
        /// <summary>
        /// Run tests for team-level operations.
        /// </summary>
        /// <param name="client">The Dropbox client.</param>
        /// <returns>An asynchronous task.</returns>
        private async Task RunTeamTests(DropboxTeamClient client)
        {
            var members = await client.Team.MembersListAsync();

            var member = members.Members.FirstOrDefault();

            if (member != null)
            {
                // A team client can perform action on a team member's behalf. To do this,
                // just pass in team member id in to AsMember function which returns a user client.
                // This client will operates on this team member's Dropbox.
                var userClient = client.AsMember(member.Profile.TeamMemberId);
                await RunUserTests(userClient);
            }
        }
示例#11
0
        static async Task ListTeamName(DropboxTeamClient teamClient)
        {
            if (_debug)
            {
                Console.WriteLine("-------------------------------------");
                Console.WriteLine("ListTeamName() called...");
            }

            TeamGetInfoResult teamInfo = await teamClient.Team.GetInfoAsync();

            if (_debug)
            {
                Console.WriteLine($"teamInfo.Name: {teamInfo.Name}");
            }
        }
示例#12
0
        static async Task EvaluateTeamMemberAccounts(DropboxTeamClient teamClient)
        {
            if (_debug)
            {
                Console.WriteLine("-------------------------------------");
                Console.WriteLine("EvaluateTeamMemberAccounts() called...");
            }

            MembersListResult teamMembers = await teamClient.Team.MembersListAsync();

            // sort team members by email, since name fields are user specified (typos, etc.)
            foreach (Dropbox.Api.Team.TeamMemberInfo teamMember in teamMembers.Members.OrderBy(m => m.Profile.Email))
            {
                _csvString = "";

                if (_debug)
                {
                    // // filter on test/validation account
                    // if (teamMember.Profile.Email == "test_user@your_company.com")
                    // {
                    //     await UpdateTeamMemberAccountList(teamClient, teamMember.Profile.TeamMemberId);
                    // }

                    // filter on account (validate shared folder owner)
                    if (teamMember.Profile.Email == "shared_folder_owner@your_company.com")
                    {
                        await UpdateTeamMemberAccountList(teamClient, teamMember.Profile.TeamMemberId);
                    }

                    // // filter on multiple associates
                    // // - one where ShareIsTeamFolder is true, the other where ShareIsInsideTeamFolder is true
                    // if (teamMember.Profile.Email == "target_user_1@your_company.com" || teamMember.Profile.Email == "target_user_2@your_company.com")
                    // {
                    //     await UpdateTeamMemberAccountList(teamClient, teamMember.Profile.TeamMemberId);
                    // }
                }
                else
                {
                    await UpdateTeamMemberAccountList(teamClient, teamMember.Profile.TeamMemberId);
                }
            }

            if (_debug)
            {
                Console.WriteLine("----------------");
                Console.WriteLine($"_teamMemberAccounts count: {_teamMemberAccounts.Count}");
            }
        }
示例#13
0
        static async Task <TeamMemberAccountModel> GetTeamMemberAccountDetails(DropboxTeamClient teamClient, string memberId)
        {
            if (_debug)
            {
                Console.WriteLine("-------------------------------------");
                Console.WriteLine("GetTeamMemberAccountDetails() called...");
            }

            TeamMemberAccountModel teamMemberAccount = await MapTeamMemberAccountDetail(teamClient, memberId);

            List <SharedFolderModel> teamMemberShares = await GetTeamMemberShares(teamClient, memberId);

            teamMemberAccount.SharedFolders = teamMemberShares;

            return(teamMemberAccount);
        }
        private async Task SetViewTeamInfo(DropboxTeamClient client)
        {
            /* sample data */
            string teamName   = "PlaceholderTeam";
            uint   numMembers = 26;

            if (AccountLinked())
            {
                var teamInfo = await client.Team.GetInfoAsync();

                teamName   = teamInfo.Name;
                numMembers = teamInfo.NumProvisionedUsers;
            }

            ViewBag.TeamName   = teamName;
            ViewBag.NumMembers = numMembers;
        }
示例#15
0
        static async Task Run()
        {
            if (_debug)
            {
                Console.WriteLine("-------------------------------------");
                Console.WriteLine("Run() called...");
            }

            using (DropboxTeamClient teamClient = new DropboxTeamClient(_accessToken))
            {
                await ListTeamName(teamClient);

                await ListTeamMembers(teamClient);

                await EvaluateTeamMemberAccounts(teamClient);
            }
        }
示例#16
0
        static async Task ListTeamMembers(DropboxTeamClient teamClient)
        {
            if (_debug)
            {
                Console.WriteLine("-------------------------------------");
                Console.WriteLine("ListTeamMembers() called...");
            }

            MembersListResult members = await teamClient.Team.MembersListAsync();

            int memberCount = 0;

            // no Count or Length, so have to enumerate to get count
            foreach (Dropbox.Api.Team.TeamMemberInfo member in members.Members)
            {
                if (_debug)
                {
                    Console.WriteLine("----------------");
                    Console.WriteLine($"Member ID: {member.Profile.TeamMemberId}");
                    Console.WriteLine($"Name     : {member.Profile.Name.DisplayName}");
                    Console.WriteLine($"Email    : {member.Profile.Email}");
                }

                memberCount++;
            }

            if (_debug)
            {
                Console.WriteLine("----------------");
                Console.WriteLine($"Total team member count           : {memberCount}");  // 252
                Console.WriteLine($"Any more members?  members.HasMore: {members.HasMore}");
            }

            while (members.HasMore)
            {
                if (_debug)
                {
                    Console.WriteLine("----------------");
                    Console.WriteLine($"members.HasMore: {members.HasMore}");
                    Console.WriteLine("Preparing to continue...");
                }

                MembersListResult membersContinue = await teamClient.Team.MembersListContinueAsync(members.Cursor);

                foreach (Dropbox.Api.Team.TeamMemberInfo member in members.Members)
                {
                    if (_debug)
                    {
                        Console.WriteLine("----------------");
                        Console.WriteLine($"Member ID: {member.Profile.TeamMemberId}");
                        Console.WriteLine($"Name     : {member.Profile.Name.DisplayName}");
                        Console.WriteLine($"Email    : {member.Profile.Email}");
                    }

                    memberCount++;
                }
            }

            if (_debug)
            {
                Console.WriteLine("----------------");
                Console.WriteLine($"Total team member count with continue: {memberCount}");  // 252
            }
        }