public void GitHubIssueEventCommentCreate() { GitHubIssueEvent issueEvent = JsonConvert.DeserializeObject <GitHubIssueEvent>(File.ReadAllText(@"GitHubIssueEvent.json")); Assert.AreEqual(issueEvent.Action, GitHubIssueActions.Actions.opened.ToString()); // Check if GitHubIssue is created. Assert.IsNotNull(issueEvent.Issue); }
public async Task <GitHubIssueEvent> AddGitHubIssueEventAsync(GitHubIssueEvent issueEvent) { if (issueEvent == null) { throw new ArgumentNullException("issueEvent"); } if (issueEvent.Issue == null) { throw new ArgumentException("issueEvent.Issue cannot be null"); } var issueEventInternal = _mapper.Map <GitHubIssueEvent, GitHubIssueEventInternal>(issueEvent); // Action can come from either Action (WebHook) or from EventName (v3 API) if (!string.IsNullOrWhiteSpace(issueEvent.EventName) && string.IsNullOrWhiteSpace(issueEvent.Action)) { issueEvent.Action = issueEvent.EventName; } _context.GitHubIssueEvents.Add(issueEventInternal); // This may trigger a github issue status change: IssueStatusChangeInternal statusChange = null; if (String.Equals(issueEvent.Action, "Closed", StringComparison.OrdinalIgnoreCase)) { statusChange = new IssueStatusChangeInternal() { Issue = issueEventInternal.Issue, ChangeDate = DateTimeOffset.Now, NewStatus = IssueStatusInternal.Closed }; } else if (String.Equals(issueEvent.Action, "Opened", StringComparison.OrdinalIgnoreCase)) { statusChange = new IssueStatusChangeInternal() { Issue = issueEventInternal.Issue, ChangeDate = DateTimeOffset.Now, NewStatus = IssueStatusInternal.Open }; } if (statusChange != null) { _context.IssueStatusChanges.Add(statusChange); } await _context.SaveChangesAsync(); var returnValue = _mapper.Map <GitHubIssueEventInternal, GitHubIssueEvent>(issueEventInternal); return(returnValue); }
public async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("Processing github webhook."); string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); GitHubIssueEvent githubEvent = JsonConvert.DeserializeObject <GitHubIssueEvent>(requestBody); if (githubEvent.action == "opened") { try { await _gitHubIssueUpdateService.AddCommentToIssue(githubEvent.Repository.Id, githubEvent.Issue.Number, githubEvent.Issue.User.Login); } catch (Exception) { return(new StatusCodeResult((int)HttpStatusCode.InternalServerError)); } } return((ActionResult) new OkObjectResult("")); }
public async Task Post([FromBody] GitHubIssueEvent value) { await _repository.AddGitHubIssueEventAsync(value); }