示例#1
0
        private static async Task LoadReposAndCollaboratorsAsync(GitHubClient client, CachedOrg cachedOrg)
        {
            var repos = await client.Repository.GetAllForOrg(cachedOrg.Name);

            var i = 0;

            foreach (var repo in repos)
            {
                PrintRateLimit(client);
                PrintPercentage(i++, repos.Count, repo.FullName);

                var cachedRepo = new CachedRepo
                {
                    Name      = repo.Name,
                    IsPrivate = repo.Private,
                    LastPush  = repo.PushedAt ?? repo.CreatedAt
                };
                cachedOrg.Repos.Add(cachedRepo);

                foreach (var user in await client.Repository.Collaborator.GetAll(repo.Owner.Login, repo.Name))
                {
                    var permission = user.Permissions.Admin
                                        ? CachedPermission.Admin
                                        : user.Permissions.Push
                                            ? CachedPermission.Push
                                            : CachedPermission.Pull;

                    var cachedCollaborator = new CachedUserAccess
                    {
                        RepoName   = cachedRepo.Name,
                        User       = user.Login,
                        Permission = permission
                    };
                    cachedOrg.Collaborators.Add(cachedCollaborator);
                }
            }
        }
示例#2
0
 public string DescribeAccess(CachedUserAccess collaborator)
 {
     return(DescribeAccess(collaborator.RepoName, collaborator.User, collaborator.Permission));
 }