feat(jotform): add new submissions trigger

This commit is contained in:
Rıdvan Akca
2024-02-05 14:50:48 +03:00
committed by Ali BARIN
parent 42f8e635ed
commit 530a920517
8 changed files with 177 additions and 1 deletions

View File

@@ -0,0 +1,109 @@
import Crypto from 'crypto';
import { URLSearchParams } from 'url';
import defineTrigger from '../../../../helpers/define-trigger.js';
export default defineTrigger({
name: 'New submissions',
key: 'newSubmissions',
type: 'webhook',
description:
'Triggers when a new submission has been added to a specific form.',
arguments: [
{
label: 'Form',
key: 'formId',
type: 'dropdown',
required: true,
description: '',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listForms',
},
],
},
},
],
async run($) {
const dataItem = {
raw: $.request.body,
meta: {
internalId: Crypto.randomUUID(),
},
};
$.pushTriggerItem(dataItem);
},
async testRun($) {
const sampleEventData = {
ip: '127.0.0.1',
type: 'WEB',
appID: '',
event: '',
action: '',
formID: Crypto.randomUUID(),
parent: '',
pretty: 'Name:test, E-mail:user@automatisch.io',
teamID: '',
unread: '',
product: '',
subject: '',
isSilent: '',
username: 'username',
deviceIDs: 'Array',
formTitle: 'Opt-In Form-Get Free Email Updates!',
fromTable: '',
customBody: '',
documentID: '',
rawRequest: '',
webhookURL: '',
customTitle: '',
trackAction: 'Array',
customParams: '',
submissionID: Crypto.randomUUID(),
customBodyParams: 'Array',
customTitleParams: 'Array',
};
const dataItem = {
raw: sampleEventData,
meta: {
internalId: sampleEventData.submissionID,
},
};
$.pushTriggerItem(dataItem);
},
async registerHook($) {
const formId = $.step.parameters.formId;
const params = new URLSearchParams({
webhookURL: $.webhookUrl,
});
const { data } = await $.http.post(
`/form/${formId}/webhooks`,
params.toString()
);
await $.flow.setRemoteWebhookId(data.content[0]);
},
async unregisterHook($) {
const formId = $.step.parameters.formId;
const { data } = await $.http.get(`/form/${formId}/webhooks`);
const webhookURLs = Object.values(data.content);
const webhookId = webhookURLs.findIndex((url) => url === $.webhookUrl);
await $.http.delete(`/form/${formId}/webhooks/${webhookId}`);
},
});