private static bool IsRelevant(WebHookPayload payload, HashSet <GitHubIssueId> knownIds) { if (payload.action == null || !_relevantActions.Contains(payload.action)) { return(false); } if (payload.issue != null && payload.repository != null) { var idText = payload.repository.full_name + "#" + payload.issue.number; if (GitHubIssueId.TryParse(idText, out var issueId) && knownIds.Contains(issueId)) { return(true); } } if (payload.project_card != null) { if (GitHubIssueId.TryParse(payload.project_card.content_url, out var issueId) && knownIds.Contains(issueId)) { return(true); } } return(IsRelevant(payload.label) || IsRelevant(payload.issue)); }
private IEnumerable <GitHubIssueId> GetKnownIds() { var tree = _treeService.Tree; if (tree != null) { foreach (var node in tree.Roots.SelectMany(r => r.DescendantsAndSelf())) { if (GitHubIssueId.TryParse(node.Id, out var id)) { yield return(id); } } } }