From 27a3edeb9304e88dd5724c57dfa9ff4851477eb2 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Sat, 7 Oct 2023 18:34:53 +0200 Subject: [PATCH] feat: Add run method to webhook triggers --- .../triggers/new-activity/index.ts | 12 ++++++++++++ .../triggers/confidential-issue-event/index.ts | 2 ++ .../triggers/confidential-note-event/index.ts | 2 ++ .../gitlab/triggers/deployment-event/index.ts | 2 ++ .../gitlab/triggers/feature-flag-event/index.ts | 2 ++ .../apps/gitlab/triggers/issue-event/index.ts | 2 ++ .../src/apps/gitlab/triggers/job-event/index.ts | 2 ++ packages/backend/src/apps/gitlab/triggers/lib.ts | 11 +++++++++++ .../gitlab/triggers/merge-request-event/index.ts | 2 ++ .../src/apps/gitlab/triggers/note-event/index.ts | 2 ++ .../apps/gitlab/triggers/pipeline-event/index.ts | 2 ++ .../src/apps/gitlab/triggers/push-event/index.ts | 2 ++ .../apps/gitlab/triggers/release-event/index.ts | 2 ++ .../apps/gitlab/triggers/tag-push-event/index.ts | 2 ++ .../gitlab/triggers/wiki-page-event/index.ts | 2 ++ .../apps/twilio/triggers/receive-sms/index.ts | 12 ++++++++++++ .../apps/typeform/triggers/new-entry/index.ts | 12 ++++++++++++ .../webhook/triggers/catch-raw-webhook/index.ts | 16 ++++++++++++++++ 18 files changed, 89 insertions(+) diff --git a/packages/backend/src/apps/flowers-software/triggers/new-activity/index.ts b/packages/backend/src/apps/flowers-software/triggers/new-activity/index.ts index efee7fcc..ef01d81b 100644 --- a/packages/backend/src/apps/flowers-software/triggers/new-activity/index.ts +++ b/packages/backend/src/apps/flowers-software/triggers/new-activity/index.ts @@ -1,3 +1,4 @@ +import Crypto from 'crypto'; import isEmpty from 'lodash/isEmpty'; import defineTrigger from '../../../../helpers/define-trigger'; import webhookFilters from '../../common/webhook-filters'; @@ -19,6 +20,17 @@ export default defineTrigger({ }, ], + async run($) { + const dataItem = { + raw: $.request.body, + meta: { + internalId: Crypto.randomUUID(), + }, + }; + + $.pushTriggerItem(dataItem); + }, + async testRun($) { const lastExecutionStep = await $.getLastExecutionStep(); diff --git a/packages/backend/src/apps/gitlab/triggers/confidential-issue-event/index.ts b/packages/backend/src/apps/gitlab/triggers/confidential-issue-event/index.ts index 662d8ccd..72dc6ccc 100644 --- a/packages/backend/src/apps/gitlab/triggers/confidential-issue-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/confidential-issue-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -19,6 +20,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.confidential_issues_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.confidential_issues_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/confidential-note-event/index.ts b/packages/backend/src/apps/gitlab/triggers/confidential-note-event/index.ts index 0033c7c6..5f37bb7e 100644 --- a/packages/backend/src/apps/gitlab/triggers/confidential-note-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/confidential-note-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -19,6 +20,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.confidential_note_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.confidential_note_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/deployment-event/index.ts b/packages/backend/src/apps/gitlab/triggers/deployment-event/index.ts index 1c5a7a29..8a5c3ef8 100644 --- a/packages/backend/src/apps/gitlab/triggers/deployment-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/deployment-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -18,6 +19,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.deployment_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.deployment_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/feature-flag-event/index.ts b/packages/backend/src/apps/gitlab/triggers/feature-flag-event/index.ts index 13623ad0..61b1f199 100644 --- a/packages/backend/src/apps/gitlab/triggers/feature-flag-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/feature-flag-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -18,6 +19,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.feature_flag_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.feature_flag_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/issue-event/index.ts b/packages/backend/src/apps/gitlab/triggers/issue-event/index.ts index 8888844d..9a9c069b 100644 --- a/packages/backend/src/apps/gitlab/triggers/issue-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/issue-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -18,6 +19,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.issues_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.issues_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/job-event/index.ts b/packages/backend/src/apps/gitlab/triggers/job-event/index.ts index 25ce4cd4..7150d247 100644 --- a/packages/backend/src/apps/gitlab/triggers/job-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/job-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -17,6 +18,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.job_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.job_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/lib.ts b/packages/backend/src/apps/gitlab/triggers/lib.ts index fc764672..29041908 100644 --- a/packages/backend/src/apps/gitlab/triggers/lib.ts +++ b/packages/backend/src/apps/gitlab/triggers/lib.ts @@ -22,6 +22,17 @@ export const projectArgumentDescriptor = { }, }; +export const getRunFn = async ($: IGlobalVariable) => { + const dataItem = { + raw: $.request.body, + meta: { + internalId: Crypto.randomUUID(), + }, + }; + + $.pushTriggerItem(dataItem); +}; + export const getTestRunFn = (eventData: IJSONObject) => ($: IGlobalVariable) => { /* diff --git a/packages/backend/src/apps/gitlab/triggers/merge-request-event/index.ts b/packages/backend/src/apps/gitlab/triggers/merge-request-event/index.ts index 497360de..a841ec38 100644 --- a/packages/backend/src/apps/gitlab/triggers/merge-request-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/merge-request-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -18,6 +19,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.merge_requests_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.merge_requests_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/note-event/index.ts b/packages/backend/src/apps/gitlab/triggers/note-event/index.ts index ac3ce464..21d68b46 100644 --- a/packages/backend/src/apps/gitlab/triggers/note-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/note-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -18,6 +19,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.note_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.note_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/pipeline-event/index.ts b/packages/backend/src/apps/gitlab/triggers/pipeline-event/index.ts index 471ad1aa..10b42739 100644 --- a/packages/backend/src/apps/gitlab/triggers/pipeline-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/pipeline-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -18,6 +19,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.pipeline_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.pipeline_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/push-event/index.ts b/packages/backend/src/apps/gitlab/triggers/push-event/index.ts index 6a3a84fc..11532a33 100644 --- a/packages/backend/src/apps/gitlab/triggers/push-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/push-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -54,6 +55,7 @@ export const triggerDescriptor: IRawTrigger = { branchFilterStrategyArgumentDescriptor, pushEventsBranchFilterArgumentDescriptor, ], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.push_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/release-event/index.ts b/packages/backend/src/apps/gitlab/triggers/release-event/index.ts index 1904ffcf..718bc7e8 100644 --- a/packages/backend/src/apps/gitlab/triggers/release-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/release-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -17,6 +18,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.releases_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.releases_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/tag-push-event/index.ts b/packages/backend/src/apps/gitlab/triggers/tag-push-event/index.ts index d1a62e29..556bc591 100644 --- a/packages/backend/src/apps/gitlab/triggers/tag-push-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/tag-push-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -18,6 +19,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.tag_push_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.tag_push_events), unregisterHook, diff --git a/packages/backend/src/apps/gitlab/triggers/wiki-page-event/index.ts b/packages/backend/src/apps/gitlab/triggers/wiki-page-event/index.ts index aa106012..f2f0f3a3 100644 --- a/packages/backend/src/apps/gitlab/triggers/wiki-page-event/index.ts +++ b/packages/backend/src/apps/gitlab/triggers/wiki-page-event/index.ts @@ -3,6 +3,7 @@ import defineTrigger from '../../../../helpers/define-trigger'; import { GITLAB_EVENT_TYPE } from '../types'; import { getRegisterHookFn, + getRunFn, getTestRunFn, projectArgumentDescriptor, unregisterHook, @@ -18,6 +19,7 @@ export const triggerDescriptor: IRawTrigger = { key: GITLAB_EVENT_TYPE.wiki_page_events, type: 'webhook', arguments: [projectArgumentDescriptor], + run: ($) => getRunFn($), testRun: getTestRunFn(data), registerHook: getRegisterHookFn(GITLAB_EVENT_TYPE.wiki_page_events), unregisterHook, diff --git a/packages/backend/src/apps/twilio/triggers/receive-sms/index.ts b/packages/backend/src/apps/twilio/triggers/receive-sms/index.ts index 4aaeb9f1..a0259ed4 100644 --- a/packages/backend/src/apps/twilio/triggers/receive-sms/index.ts +++ b/packages/backend/src/apps/twilio/triggers/receive-sms/index.ts @@ -1,4 +1,5 @@ import { URLSearchParams } from 'node:url'; +import Crypto from 'crypto'; import isEmpty from 'lodash/isEmpty'; import defineTrigger from '../../../../helpers/define-trigger'; import fetchMessages from './fetch-messages'; @@ -37,6 +38,17 @@ export default defineTrigger({ useSingletonWebhook: true, singletonWebhookRefValueParameter: 'phoneNumberSid', + async run($) { + const dataItem = { + raw: $.request.body, + meta: { + internalId: Crypto.randomUUID(), + }, + }; + + $.pushTriggerItem(dataItem); + }, + async testRun($) { await fetchMessages($); diff --git a/packages/backend/src/apps/typeform/triggers/new-entry/index.ts b/packages/backend/src/apps/typeform/triggers/new-entry/index.ts index 01b3c355..8ef73a41 100644 --- a/packages/backend/src/apps/typeform/triggers/new-entry/index.ts +++ b/packages/backend/src/apps/typeform/triggers/new-entry/index.ts @@ -1,3 +1,4 @@ +import Crypto from 'crypto'; import appConfig from '../../../../config/app'; import defineTrigger from '../../../../helpers/define-trigger'; @@ -27,6 +28,17 @@ export default defineTrigger({ }, ], + async run($) { + const dataItem = { + raw: $.request.body, + meta: { + internalId: Crypto.randomUUID(), + }, + }; + + $.pushTriggerItem(dataItem); + }, + async testRun($) { const { data: form } = await $.http.get( `/forms/${$.step.parameters.formId}` diff --git a/packages/backend/src/apps/webhook/triggers/catch-raw-webhook/index.ts b/packages/backend/src/apps/webhook/triggers/catch-raw-webhook/index.ts index 00054814..46873370 100644 --- a/packages/backend/src/apps/webhook/triggers/catch-raw-webhook/index.ts +++ b/packages/backend/src/apps/webhook/triggers/catch-raw-webhook/index.ts @@ -1,3 +1,4 @@ +import Crypto from 'crypto'; import isEmpty from 'lodash/isEmpty'; import defineTrigger from '../../../../helpers/define-trigger'; @@ -8,6 +9,21 @@ export default defineTrigger({ showWebhookUrl: true, description: 'Triggers when the webhook receives a request.', + async run($) { + const dataItem = { + raw: { + headers: $.request.headers, + body: $.request.body, + query: $.request.query, + }, + meta: { + internalId: Crypto.randomUUID(), + }, + }; + + $.pushTriggerItem(dataItem); + }, + async testRun($) { const lastExecutionStep = await $.getLastExecutionStep();