public static bool IsNotBug(RoachIssue issue) { if (!issue.IsOpen) { return(true); } return (issue.Labels.Contains("Documentation") || issue.Labels.Contains("Question") || issue.Labels.Contains("Area-Infrastructure")); }
public RoachIssueEntity(RoachIssue issue) { PartitionKey = GetPartitionKey(issue.RepoId); RowKey = GetRowKey(issue.Id); Number = issue.Number; Assignee = issue.Assignee; MilestoneNumber = issue.MilestoneId.Number; Title = issue.Title; IsOpen = issue.IsOpen; LabelsRaw = string.Join("#", issue.Labels); UpdatedAtDateTime = (issue.UpdatedAt ?? default(DateTimeOffset)).UtcDateTime; }
/// <summary> /// Populates the issues tables to reflect changes that occured since the see cref="since"/> parameter. /// </summary> public async Task PopulateIssuesSince(RoachRepoId repoId, DateTimeOffset since, CancellationToken cancellationtoken = default(CancellationToken)) { var changedIssues = await _githubQueryUtil.GetIssuesChangedSince(repoId, since); var issueList = new List <RoachIssueEntity>(capacity: changedIssues.Count); foreach (var changedIssue in changedIssues) { var issue = new RoachIssue(repoId, changedIssue); issueList.Add(new RoachIssueEntity(issue)); } // TODO: Need to thread through the CancellationToken here. await AzureUtil.InsertBatchUnordered(_issueTable, issueList); }
public static bool AssignedToTeam(RoachIssue issue) { switch (issue.Assignee.ToLower()) { case "jaredpar": case "jcouv": case "agocke": case "alekseyts": case "cston": case "gafter": case "tyoverby": case "vsadov": return(true); default: return(false); } }
public static bool IsIssue(RoachIssue issue) { if (IsNotBug(issue)) { return(false); } if (AssignedToTeam(issue)) { return(true); } if (AssignedToArea(issue) && issue.Assignee == TheBugsConstants.UnassignedName) { return(true); } return(false); }
public static async Task GitHubIssueChanged( [QueueTrigger(QueueNames.IssueChanged)] string rawMessage, [Table(TableNames.RoachIssueTable)] CloudTable table, CancellationToken cancellationToken) { var issueMessage = JsonConvert.DeserializeObject <IssueMessage>(rawMessage); var repoId = RoachRepoId.ParseFullName(issueMessage.RepoFullName); var issueId = new RoachIssueId(repoId, issueMessage.Number); var milestoneId = new RoachMilestoneId(repoId, issueMessage.MilestoneNumber); var isOpen = issueMessage.State == "open"; var updatedAt = issueMessage.UpdatedAt != null ? DateTimeOffset.Parse(issueMessage.UpdatedAt) : (DateTimeOffset?)null; var roachIssue = new RoachIssue(issueId, issueMessage.Assignee ?? TheBugsConstants.UnassignedName, milestoneId, issueMessage.Title, isOpen, issueMessage.Labels, updatedAt); var issueEntity = new RoachIssueEntity(roachIssue); var operation = TableOperation.InsertOrReplace(issueEntity); await table.ExecuteAsync(TableOperation.InsertOrReplace(issueEntity), cancellationToken); }
public static bool AssignedToTeam(RoachIssue issue) { switch (issue.Assignee.ToLower()) { case "pilchie": case "balajikris": case "brettfo": case "cyrusnajmabadi": case "dpoeschl": case "dustincampbell": case "jasonmalinowski": case "jmarolf": case "rchande": case "tmeschter": return(true); default: return(false); } }
public static bool AssignedToTeam(RoachIssue issue) { switch (issue.Assignee.ToLower()) { case "pilchie": case "brettfo": case "cbo425": case "cyrusnajmabadi": case "dpoeschl": case "jasonmalinowski": case "kevinransom": case "rchande": case "sharwell": case "dustincampbell": case "kuhlenh": return(true); default: return(false); } }
public static bool AssignedToArea(RoachIssue issue) { return(issue.Labels.Contains("Area-Ide")); }