private async Task <bool> ProcessPullRequestAsync(PullRequestMonitorItem item) { var azDoClient = item.AzDoClient; var pr = await azDoClient.GetPullRequestAsync(item.PullRequest.Repository.Url, item.PullRequest.PullRequestId); if (pr.Status != "active") { //PR was already completed or abandoned. _logger.LogTrace(new EventId(5, "NotActive"), "{PullRequestId} for {Repository} not active", pr.PullRequestId, pr.Repository.Id); return(true); } //now we are just dealing with Status = Active if (pr.MergeStatus == "queued") { _logger.LogTrace(new EventId(6, "StillQueued"), "{PullRequestId} for {Repository} is still queued", pr.PullRequestId, pr.Repository.Id); return(false); } if (pr.MergeStatus == "succeeded") { _logger.LogInformation(new EventId(2, "CompletingPullRequest"), "Completing {PullRequestId} for {Repository}", pr.PullRequestId, pr.Repository.Id); await azDoClient.CompletePullRequestAsync(pr.Repository.Url, pr.PullRequestId, pr.LastMergeSourceCommit.CommitId); _logger.LogInformation(new EventId(3, "CompletedPullRequest"), "Completed {PullRequestId} for {Repository}", pr.PullRequestId, pr.Repository.Id); } return(true); }
public void Monitor(PullRequestMonitorItem item) { if (item is null) { throw new ArgumentNullException(nameof(item)); } _queue.Enqueue(item); }