Reuse webhooks.

This commit is contained in:
Ricardo Espinoza 2020-02-28 10:06:05 -05:00
parent 44f5d4b528
commit 50ecb8d0a9

View file

@ -17,6 +17,7 @@ import {
ITypeformAnswerField,
ITypeformDefinition,
} from './GenericFunctions';
import { Webhook } from '../Webhook.node';
export class TypeformTrigger implements INodeType {
@ -89,24 +90,23 @@ export class TypeformTrigger implements INodeType {
default: {
async checkExists(this: IHookFunctions): Promise<boolean> {
const webhookData = this.getWorkflowStaticData('node');
if (webhookData.webhookId === undefined) {
// No webhook id is set so no webhook can exist
return false;
}
const webhookUrl = this.getNodeWebhookUrl('default');
const formId = this.getNodeParameter('formId') as string;
const endpoint = `forms/${formId}/webhooks/${webhookData.webhookId}`;
const endpoint = `forms/${formId}/webhooks`;
try {
const body = {};
await apiRequest.call(this, 'POST', endpoint, body);
} catch (e) {
return false;
const { items } = await apiRequest.call(this, 'GET', endpoint, {});
for (const item of items) {
if (item.form_id === formId
&& item.url === webhookUrl) {
webhookData.webhookId = item.tag;
return true;
}
}
return true;
return false;
},
async create(this: IHookFunctions): Promise<boolean> {
const webhookUrl = this.getNodeWebhookUrl('default');
@ -138,14 +138,12 @@ export class TypeformTrigger implements INodeType {
if (webhookData.webhookId !== undefined) {
const endpoint = `forms/${formId}/webhooks/${webhookData.webhookId}`;
try {
const body = {};
await apiRequest.call(this, 'DELETE', endpoint, body);
} catch (e) {
return false;
}
// Remove from the static workflow data so that it is clear
// that no webhooks are registred anymore
delete webhookData.webhookId;