Exemplo n.º 1
0
        public static IEnumerable <CachedUser> GetAdministrators(this CachedRepo repo)
        {
            var result = repo.Users
                         .Where(ua => ua.Permission == CachedPermission.Admin &&
                                !ua.User.IsBot() &&
                                !ua.Describe().IsOwner)
                         .Select(ua => ua.User);

            if (!result.Any())
            {
                return(repo.Org.GetOwners());
            }

            return(result);
        }
Exemplo n.º 2
0
 public PolicyViolation(PolicyDescriptor descriptor,
                        string title,
                        string body,
                        CachedOrg org,
                        CachedRepo repo = null,
                        CachedTeam team = null,
                        CachedUser user = null,
                        IReadOnlyCollection <CachedUser> assignees = null)
 {
     Descriptor  = descriptor;
     Fingerprint = ComputeFingerprint(descriptor.DiagnosticId, repo, user, team);
     Title       = title;
     Body        = UnindentAndTrim(body);
     Org         = org;
     Repo        = repo;
     Team        = team;
     User        = user;
     Assignees   = ComputeAssignees(org, repo, team, user, assignees);
 }
Exemplo n.º 3
0
        private static Guid ComputeFingerprint(string diagnosticId, CachedRepo repo, CachedUser user, CachedTeam team)
        {
            using (var fingerprintBytes = new MemoryStream())
                using (var md5 = MD5.Create())
                {
                    using (var writer = new StreamWriter(fingerprintBytes, Encoding.UTF8, 2048, leaveOpen: true))
                    {
                        writer.WriteLine(diagnosticId);
                        writer.WriteLine(repo?.Org.Name);
                        writer.WriteLine(repo?.Name);
                        writer.WriteLine(user?.Login);
                        writer.WriteLine(team?.Name);
                    }

                    fingerprintBytes.Position = 0;

                    var hashBytes = md5.ComputeHash(fingerprintBytes);
                    return(new Guid(hashBytes));
                }
        }
Exemplo n.º 4
0
        private static IReadOnlyCollection <CachedUser> ComputeAssignees(CachedOrg org, CachedRepo repo, CachedTeam team, CachedUser user, IReadOnlyCollection <CachedUser> assignees)
        {
            if (assignees != null && assignees.Count > 0)
            {
                return(assignees);
            }

            if (repo != null)
            {
                return(repo.GetAdministrators().ToArray());
            }

            if (team != null)
            {
                return(team.GetMaintainers().ToArray());
            }

            if (user != null)
            {
                return new[] { user }
            }
            ;

            return(org.GetOwners().ToArray());
        }
Exemplo n.º 5
0
        public static bool IsOwnedByMicrosoft(this CachedRepo repo)
        {
            var microsoftTeam = repo.Org.GetMicrosoftTeam();

            return(repo.Teams.Any(ta => ta.Team == microsoftTeam));
        }
Exemplo n.º 6
0
 public static string Markdown(this CachedRepo repo)
 {
     return($"[{repo.Name}]({repo.Url})");
 }