public RootWebhookHandler(ILogger <IRootWebhookHandler> logger,
                           IPingWebhookHandler pingHandler,
                           IConfirmationWebhookHandler confirmationHandler,
                           IConfigWebhookHandler configHandler,
                           IInstallUpdateWebhookHandler installUpdateHandler,
                           IEventWebhookHandler eventHandler,
                           IOAuthWebhookHandler oauthHandler,
                           IUninstallWebhookHandler uninstallHandler,
                           ICryptoUtils cryptoUtils)
 {
     this.Logger = logger ??
                   throw new ArgumentNullException(nameof(logger));
     _confirmationHandler = confirmationHandler ??
                            throw new ArgumentNullException(nameof(confirmationHandler));
     _pingHandler = pingHandler ??
                    throw new ArgumentNullException(nameof(pingHandler));
     _configHandler = configHandler ??
                      throw new ArgumentNullException(nameof(configHandler));
     _installUpdateHandler = installUpdateHandler ??
                             throw new ArgumentNullException(nameof(installUpdateHandler));
     _eventHandler = eventHandler ??
                     throw new ArgumentNullException(nameof(eventHandler));
     _oauthHandler = oauthHandler ??
                     throw new ArgumentNullException(nameof(oauthHandler));
     _uninstallHandler = uninstallHandler ??
                         throw new ArgumentNullException(nameof(uninstallHandler));
     _cryptoUtils = cryptoUtils ??
                    throw new ArgumentNullException(nameof(cryptoUtils));
 }
 public static async Task <HttpResponseMessage> HandleEventWebhookAsync(
     [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "events")] HttpRequestMessage request,
     [OrchestrationClient] DurableOrchestrationClient durableClient,
     [ServerlessCqrsEventWebhookHandler("EventHandlerOrchestrator")] IEventWebhookHandler handler
     )
 {
     return(await handler.HandleAsync(request, durableClient));
 }