feat: Implement webhook logic along with new entry typeform trigger

This commit is contained in:
Faruk AYDIN
2022-11-28 23:30:03 +01:00
committed by Ali BARIN
parent 397926f994
commit d83e8dabf8
13 changed files with 246 additions and 12 deletions

View File

@@ -0,0 +1,55 @@
import { Request, Response } from 'express';
import { ITriggerItem } from '@automatisch/types';
import Flow from '../../models/flow';
import triggerQueue from '../../queues/trigger';
import globalVariable from '../../helpers/global-variable';
export default async (request: Request, response: Response) => {
const flow = await Flow.query()
.findById(request.params.flowId)
.throwIfNotFound();
if (!flow.active) {
return response.send(404);
}
const triggerStep = await flow.getTriggerStep();
const app = await triggerStep.getApp();
if (app.auth.verifyWebhook) {
const $ = await globalVariable({
flow,
connection: await triggerStep.$relatedQuery('connection'),
app,
step: triggerStep,
testRun: false,
request,
});
const verified = await app.auth.verifyWebhook($);
if (!verified) {
return response.sendStatus(401);
}
}
const triggerItem: ITriggerItem = {
raw: request.body,
meta: {
internalId: request.body.form_response.token,
},
};
const jobName = `${triggerStep.id}-${triggerItem.meta.internalId}`;
const jobPayload = {
flowId: flow.id,
stepId: triggerStep.id,
triggerItem,
};
await triggerQueue.add(jobName, jobPayload);
return response.sendStatus(200);
};