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());
        }