UNPKG

n8n-nodes-base

Version:

Base nodes of n8n

204 lines 7.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GetResponseTrigger = void 0; const n8n_workflow_1 = require("n8n-workflow"); const GenericFunctions_1 = require("./GenericFunctions"); class GetResponseTrigger { description = { displayName: 'GetResponse Trigger', name: 'getResponseTrigger', // eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg icon: 'file:getResponse.png', group: ['trigger'], version: 1, description: 'Starts the workflow when GetResponse events occur', defaults: { name: 'GetResponse Trigger', }, inputs: [], outputs: [n8n_workflow_1.NodeConnectionTypes.Main], credentials: [ { name: 'getResponseApi', required: true, displayOptions: { show: { authentication: ['apiKey'], }, }, }, { name: 'getResponseOAuth2Api', required: true, displayOptions: { show: { authentication: ['oAuth2'], }, }, }, ], webhooks: [ { name: 'default', httpMethod: 'GET', responseMode: 'onReceived', path: 'webhook', }, ], properties: [ { displayName: 'Authentication', name: 'authentication', type: 'options', options: [ { name: 'API Key', value: 'apiKey', }, { name: 'OAuth2', value: 'oAuth2', }, ], default: 'apiKey', }, { displayName: 'Events', name: 'events', type: 'multiOptions', options: [ { name: 'Customer Subscribed', value: 'subscribe', description: 'Receive notifications when a customer is subscribed to a list', }, { name: 'Customer Unsubscribed', value: 'unsubscribe', description: 'Receive notifications when a customer is unsubscribed from a list', }, { name: 'Email Clicked', value: 'click', description: 'Receive notifications when a email is clicked', }, { name: 'Email Opened', value: 'open', description: 'Receive notifications when a email is opened', }, { name: 'Survey Submitted', value: 'survey', description: 'Receive notifications when a survey is submitted', }, ], default: [], required: true, }, { displayName: 'List Names or IDs', name: 'listIds', type: 'multiOptions', description: 'Choose from the list, or specify IDs using an <a href="https://docs.n8n.io/code/expressions/">expression</a>', typeOptions: { loadOptionsMethod: 'getLists', }, default: [], }, { displayName: 'Options', name: 'options', placeholder: 'Add option', type: 'collection', default: {}, options: [ { displayName: 'Delete Current Subscription', name: 'delete', type: 'boolean', default: false, description: 'Whether to delete the current subscription', }, ], }, ], }; methods = { loadOptions: { // Get all the available teams to display them to user so that they can // select them easily async getLists() { const returnData = []; const lists = await GenericFunctions_1.getResponseApiRequestAllItems.call(this, 'GET', '/campaigns'); returnData.push({ name: '*', value: '*' }); for (const list of lists) { returnData.push({ name: list.name, value: list.campaignId, }); } return returnData; }, }, }; webhookMethods = { default: { async checkExists() { const webhookUrl = this.getNodeWebhookUrl('default'); const deleteCurrentSubscription = this.getNodeParameter('options.delete', false); try { const data = await GenericFunctions_1.getresponseApiRequest.call(this, 'GET', '/accounts/callbacks', {}); if (data.url !== webhookUrl) { if (!deleteCurrentSubscription) { throw new n8n_workflow_1.NodeApiError(this.getNode(), data, { message: `The webhook (${data.url}) is active in the account. Delete it manually or set the parameter "Delete Current Subscription" to true, and the node will delete it for you.`, }); } } } catch (error) { if (error.httpCode === '404') { return false; } } await GenericFunctions_1.getresponseApiRequest.call(this, 'DELETE', '/accounts/callbacks'); return false; }, async create() { const webhookUrl = this.getNodeWebhookUrl('default'); const events = this.getNodeParameter('events'); const body = { url: webhookUrl, actions: events.reduce((accumulator, currentValue) => { accumulator[currentValue] = true; return accumulator; }, {}), }; await GenericFunctions_1.getresponseApiRequest.call(this, 'POST', '/accounts/callbacks', body); return true; }, async delete() { try { await GenericFunctions_1.getresponseApiRequest.call(this, 'DELETE', '/accounts/callbacks'); } catch (error) { return false; } return true; }, }, }; async webhook() { const query = this.getQueryData(); const listIds = this.getNodeParameter('listIds'); if (!listIds.includes('*') && !listIds.includes(query.CAMPAIGN_ID)) { return {}; } return { workflowData: [this.helpers.returnJsonArray(query)], }; } } exports.GetResponseTrigger = GetResponseTrigger; //# sourceMappingURL=GetResponseTrigger.node.js.map