From e4b31c7f528902cdcf240146e50cd59d892b2345 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Mon, 13 Jan 2025 16:11:29 +0000 Subject: [PATCH] refactor(webhook): remove singleton webhook logic --- .../apps/twilio/triggers/receive-sms/index.js | 3 -- .../handler-by-connection-id-and-ref-value.js | 38 ------------------- packages/backend/src/models/step.js | 18 +-------- packages/backend/src/routes/webhooks.js | 9 ----- packages/web/src/propTypes/propTypes.js | 4 -- 5 files changed, 1 insertion(+), 71 deletions(-) delete mode 100644 packages/backend/src/controllers/webhooks/handler-by-connection-id-and-ref-value.js diff --git a/packages/backend/src/apps/twilio/triggers/receive-sms/index.js b/packages/backend/src/apps/twilio/triggers/receive-sms/index.js index d5224ca1..eac75b1a 100644 --- a/packages/backend/src/apps/twilio/triggers/receive-sms/index.js +++ b/packages/backend/src/apps/twilio/triggers/receive-sms/index.js @@ -35,9 +35,6 @@ export default defineTrigger({ }, ], - useSingletonWebhook: true, - singletonWebhookRefValueParameter: 'phoneNumberSid', - async run($) { const dataItem = { raw: $.request.body, diff --git a/packages/backend/src/controllers/webhooks/handler-by-connection-id-and-ref-value.js b/packages/backend/src/controllers/webhooks/handler-by-connection-id-and-ref-value.js deleted file mode 100644 index 2f5c611f..00000000 --- a/packages/backend/src/controllers/webhooks/handler-by-connection-id-and-ref-value.js +++ /dev/null @@ -1,38 +0,0 @@ -import path from 'node:path'; - -import Connection from '../../models/connection.js'; -import logger from '../../helpers/logger.js'; -import handler from '../../helpers/webhook-handler.js'; - -export default async (request, response) => { - const computedRequestPayload = { - headers: request.headers, - body: request.body, - query: request.query, - params: request.params, - }; - logger.debug(`Handling incoming webhook request at ${request.originalUrl}.`); - logger.debug(JSON.stringify(computedRequestPayload, null, 2)); - - const { connectionId } = request.params; - - const connection = await Connection.query() - .findById(connectionId) - .throwIfNotFound(); - - if (!(await connection.verifyWebhook(request))) { - return response.sendStatus(401); - } - - const triggerSteps = await connection - .$relatedQuery('triggerSteps') - .where('webhook_path', path.join(request.baseUrl, request.path)); - - if (triggerSteps.length === 0) return response.sendStatus(404); - - for (const triggerStep of triggerSteps) { - await handler(triggerStep.flowId, request, response); - } - - response.sendStatus(204); -}; diff --git a/packages/backend/src/models/step.js b/packages/backend/src/models/step.js index 7c31e0a6..41c53373 100644 --- a/packages/backend/src/models/step.js +++ b/packages/backend/src/models/step.js @@ -1,5 +1,4 @@ import { URL } from 'node:url'; -import get from 'lodash.get'; import Base from './base.js'; import App from './app.js'; import Flow from './flow.js'; @@ -109,25 +108,10 @@ class Step extends Base { if (!triggerCommand) return null; - const { useSingletonWebhook, singletonWebhookRefValueParameter, type } = - triggerCommand; - - const isWebhook = type === 'webhook'; + const isWebhook = triggerCommand.type === 'webhook'; if (!isWebhook) return null; - if (singletonWebhookRefValueParameter) { - const parameterValue = get( - this.parameters, - singletonWebhookRefValueParameter - ); - return `/webhooks/connections/${this.connectionId}/${parameterValue}`; - } - - if (useSingletonWebhook) { - return `/webhooks/connections/${this.connectionId}`; - } - if (this.parameters.workSynchronously) { return `/webhooks/flows/${this.flowId}/sync`; } diff --git a/packages/backend/src/routes/webhooks.js b/packages/backend/src/routes/webhooks.js index 98cadef0..cd2f359b 100644 --- a/packages/backend/src/routes/webhooks.js +++ b/packages/backend/src/routes/webhooks.js @@ -4,7 +4,6 @@ import multer from 'multer'; import appConfig from '../config/app.js'; import webhookHandlerByFlowId from '../controllers/webhooks/handler-by-flow-id.js'; import webhookHandlerSyncByFlowId from '../controllers/webhooks/handler-sync-by-flow-id.js'; -import webhookHandlerByConnectionIdAndRefValue from '../controllers/webhooks/handler-by-connection-id-and-ref-value.js'; const router = Router(); const upload = multer(); @@ -39,14 +38,6 @@ function createRouteHandler(path, handler) { .post(wrappedHandler); } -createRouteHandler( - '/connections/:connectionId/:refValue', - webhookHandlerByConnectionIdAndRefValue -); -createRouteHandler( - '/connections/:connectionId', - webhookHandlerByConnectionIdAndRefValue -); createRouteHandler('/flows/:flowId/sync', webhookHandlerSyncByFlowId); createRouteHandler('/flows/:flowId', webhookHandlerByFlowId); createRouteHandler('/:flowId', webhookHandlerByFlowId); diff --git a/packages/web/src/propTypes/propTypes.js b/packages/web/src/propTypes/propTypes.js index bb594912..77acf9ff 100644 --- a/packages/web/src/propTypes/propTypes.js +++ b/packages/web/src/propTypes/propTypes.js @@ -123,8 +123,6 @@ export const RawTriggerPropType = PropTypes.shape({ showWebhookUrl: PropTypes.bool, pollInterval: PropTypes.number, description: PropTypes.string, - useSingletonWebhook: PropTypes.bool, - singletonWebhookRefValueParameter: PropTypes.string, getInterval: PropTypes.func, run: PropTypes.func, testRun: PropTypes.func, @@ -140,8 +138,6 @@ export const TriggerPropType = PropTypes.shape({ showWebhookUrl: PropTypes.bool, pollInterval: PropTypes.number, description: PropTypes.string, - useSingletonWebhook: PropTypes.bool, - singletonWebhookRefValueParameter: PropTypes.string, getInterval: PropTypes.func, run: PropTypes.func, testRun: PropTypes.func,