refactor(webhook): remove singleton webhook logic

This commit is contained in:
Ali BARIN
2025-01-13 16:11:29 +00:00
parent d688a97081
commit e4b31c7f52
5 changed files with 1 additions and 71 deletions

View File

@@ -35,9 +35,6 @@ export default defineTrigger({
},
],
useSingletonWebhook: true,
singletonWebhookRefValueParameter: 'phoneNumberSid',
async run($) {
const dataItem = {
raw: $.request.body,

View File

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

View File

@@ -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`;
}

View File

@@ -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);

View File

@@ -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,