public Task EnqueueAsync(IGithubEvent @event) { if (!disposed) { if (@event is PullRequestEvent) { this.pullRequestEvents.Enqueue(@event); } else { this.pushEvents.Enqueue(@event); } } return(Task.CompletedTask); }
public async Task <IActionResult> PostWebHookIntegrationAsync( [FromRoute] string organisationId, [FromRoute] string teamId, [FromRoute] string appId, [FromServices] IApplicationService service, [FromServices] IGitHubWebHookService githubService) { var headerAuth = Request.Headers["X-Hub-Signature"]; var headerEvent = Request.Headers["X-GitHub-Event"]; Console.WriteLine($"X-Hub-Signature: ${headerAuth}"); Console.WriteLine($"X-GitHub-Event: ${headerEvent}"); using (var reader = new StreamReader(Request.Body)) { var payload = await reader.ReadToEndAsync(); if (!string.IsNullOrWhiteSpace(headerEvent) && !string.IsNullOrWhiteSpace(headerAuth) && await service.IsValidSha1Async(organisationId, teamId, appId, headerAuth, payload)) { if (headerEvent.Equals("push") || headerEvent.Equals("pull_request")) { IGithubEvent @event = null; var jsonBody = payload.ToString(); if (headerEvent.Equals("push")) { @event = JsonSerializer.Deserialize <PushEvent>(jsonBody, optionSerialization); } else { @event = JsonSerializer.Deserialize <PullRequestEvent>(jsonBody, optionSerialization); } @event.ApplicationId = appId; @event.OrganisationId = organisationId; @event.TeamId = teamId; await githubService.EnqueueAsync(@event); } } } return(Ok()); }