From 90463a07323335198d64ef9013adb22c10fa0e03 Mon Sep 17 00:00:00 2001 From: KernelDeimos Date: Tue, 21 May 2024 17:25:28 -0400 Subject: [PATCH] Add support for webhook endpoints --- packages/backend/src/services/BaseService.js | 2 +- packages/backend/src/services/Container.js | 2 +- packages/backend/src/services/WebServerService.js | 12 ++++++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/packages/backend/src/services/BaseService.js b/packages/backend/src/services/BaseService.js index d19d362f..da6c6bae 100644 --- a/packages/backend/src/services/BaseService.js +++ b/packages/backend/src/services/BaseService.js @@ -51,7 +51,7 @@ class BaseService extends AdvancedBase { async __on (id, args) { const handler = this.__get_event_handler(id); - return await handler(id, args); + return await handler(id, ...args); } __get_event_handler (id) { diff --git a/packages/backend/src/services/Container.js b/packages/backend/src/services/Container.js index ee85eb9b..341aa387 100644 --- a/packages/backend/src/services/Container.js +++ b/packages/backend/src/services/Container.js @@ -113,7 +113,7 @@ class Container { const promises = []; for ( const k in this.instances_ ) { if ( this.instances_[k].__on ) { - promises.push(this.instances_[k].__on(id, ...args)); + promises.push(this.instances_[k].__on(id, args)); } } await Promise.all(promises); diff --git a/packages/backend/src/services/WebServerService.js b/packages/backend/src/services/WebServerService.js index cecbd3ea..dcd136ce 100644 --- a/packages/backend/src/services/WebServerService.js +++ b/packages/backend/src/services/WebServerService.js @@ -46,7 +46,10 @@ class WebServerService extends BaseService { const app = this.app; const services = this.services; await services.emit('install.middlewares.context-aware', { app }); - await services.emit('install.routes', { app }); + await services.emit('install.routes', { + app, + router_webhooks: this.router_webhooks, + }); await services.emit('install.routes-gui', { app }); } @@ -123,7 +126,7 @@ class WebServerService extends BaseService { ports_to_try = null; // GC const url = config.origin; - + this.startup_widget = () => { const link = `\x1B[34;1m${osclink(url)}\x1B[0m`; const lines = [ @@ -320,6 +323,11 @@ class WebServerService extends BaseService { } }) + // Web hooks need a router that occurs before JSON parse middleware + // so that signatures of the raw JSON can be verified + this.router_webhooks = express.Router(); + app.use(this.router_webhooks); + app.use(express.json({limit: '50mb'})); const cookieParser = require('cookie-parser');