diff --git a/packages/nodes-base/credentials/UProcApi.credentials.ts b/packages/nodes-base/credentials/UProcApi.credentials.ts index 5428bc4edb..197e7140de 100644 --- a/packages/nodes-base/credentials/UProcApi.credentials.ts +++ b/packages/nodes-base/credentials/UProcApi.credentials.ts @@ -7,7 +7,7 @@ export class UProcApi implements ICredentialType { name = 'uprocApi'; displayName = 'uProc API'; properties = [ - { + { displayName: 'Email', name: 'email', type: 'string' as NodePropertyTypes, diff --git a/packages/nodes-base/nodes/UProc/GenericFunctions.ts b/packages/nodes-base/nodes/UProc/GenericFunctions.ts index 48629d0675..c322249ec2 100644 --- a/packages/nodes-base/nodes/UProc/GenericFunctions.ts +++ b/packages/nodes-base/nodes/UProc/GenericFunctions.ts @@ -22,13 +22,13 @@ export async function uprocApiRequest(this: IHookFunctions | IExecuteFunctions | const options: OptionsWithUri = { headers: { Authorization: `Basic ${token}`, - "User-agent": "n8n" + 'User-agent': 'n8n', }, method, qs, body, uri: uri || `https://api.uproc.io/api/v2/process`, - json: true + json: true, }; try { diff --git a/packages/nodes-base/nodes/UProc/ToolDescription.ts b/packages/nodes-base/nodes/UProc/ToolDescription.ts index 6fa7bf7d01..733a6d08fa 100644 --- a/packages/nodes-base/nodes/UProc/ToolDescription.ts +++ b/packages/nodes-base/nodes/UProc/ToolDescription.ts @@ -30,12 +30,12 @@ for (const group of (groups as IDataObject).groups as IDataObject[]) { displayOptions: { show: { group: [ - group.name + group.name, ], }, }, default: '', - options: [] + options: [], }; const options = []; @@ -45,7 +45,7 @@ for (const group of (groups as IDataObject).groups as IDataObject[]) { const option = { name: tool.d as string, value: tool.k, - description: (tool.ed as string) + ` Info` + description: (tool.ed as string) + ` Info`, }; options.push(option); } @@ -82,7 +82,7 @@ for (const tool of (tools as IDataObject).processors as IDataObject[]) { tool.g, ], tool: [ - tool.k + tool.k, ], }, }, diff --git a/packages/nodes-base/nodes/UProc/UProc.node.ts b/packages/nodes-base/nodes/UProc/UProc.node.ts index 21704b2f18..8721f9b166 100644 --- a/packages/nodes-base/nodes/UProc/UProc.node.ts +++ b/packages/nodes-base/nodes/UProc/UProc.node.ts @@ -1,145 +1,142 @@ import { - IExecuteFunctions, + IExecuteFunctions, } from 'n8n-core'; import { - IDataObject, - INodeExecutionData, - INodeType, - INodeTypeDescription, + IDataObject, + INodeExecutionData, + INodeType, + INodeTypeDescription, } from 'n8n-workflow'; import { - uprocApiRequest, + uprocApiRequest, } from './GenericFunctions'; import { - groupOptions, + groupOptions, } from './GroupDescription'; import { - toolOperations, - toolParameters, + toolOperations, + toolParameters, } from './ToolDescription'; export class UProc implements INodeType { - description: INodeTypeDescription = { - displayName: 'uProc', - name: 'uproc', - icon: 'file:uproc.png', - group: ['output'], - version: 1, - subtitle: '={{$parameter["tool"]}}', - description: 'Consume uProc API', - defaults: { - name: 'uProc', - color: '#219ef9', - }, - inputs: ['main'], - outputs: ['main'], - credentials: [ - { - name: 'uprocApi', - required: true, - }, - ], - properties: [ - ...groupOptions, - ...toolOperations, - ...toolParameters, - { - displayName: 'Additional Options', - name: 'additionalOptions', - type: 'collection', - placeholder: 'Add Option', - default: {}, - displayOptions: { - show: { - group: [ - 'audio', - 'communication', - 'company', - 'finance', - 'geographic', - 'image', - 'internet', - 'personal', - 'product', - 'security', - 'text', - ], - }, - }, - options: [ - { - displayName: 'Data Webhook', - name: 'dataWebhook', - type: 'string', - description: 'URL to send tool response when tool has resolved your request. You can create your own webhook at en Beeceptor, Integromat, Zapier or n8n', - default: '', - } - ] - } - ], - }; + description: INodeTypeDescription = { + displayName: 'uProc', + name: 'uproc', + icon: 'file:uproc.png', + group: ['output'], + version: 1, + subtitle: '={{$parameter["tool"]}}', + description: 'Consume uProc API', + defaults: { + name: 'uProc', + color: '#219ef9', + }, + inputs: ['main'], + outputs: ['main'], + credentials: [ + { + name: 'uprocApi', + required: true, + }, + ], + properties: [ + ...groupOptions, + ...toolOperations, + ...toolParameters, + { + displayName: 'Additional Options', + name: 'additionalOptions', + type: 'collection', + placeholder: 'Add Option', + default: {}, + displayOptions: { + show: { + group: [ + 'audio', + 'communication', + 'company', + 'finance', + 'geographic', + 'image', + 'internet', + 'personal', + 'product', + 'security', + 'text', + ], + }, + }, + options: [ + { + displayName: 'Data Webhook', + name: 'dataWebhook', + type: 'string', + description: 'URL to send tool response when tool has resolved your request. You can create your own webhook at en Beeceptor, Integromat, Zapier or n8n', + default: '', + }, + ], + }, + ], + }; - async execute(this: IExecuteFunctions): Promise { - const items = this.getInputData(); - const returnData: IDataObject[] = []; - const length = items.length as unknown as number; - let responseData; - const group = this.getNodeParameter('group', 0) as string; - const tool = this.getNodeParameter('tool', 0) as string; - const additionalOptions = this.getNodeParameter('additionalOptions', 0) as IDataObject; + async execute(this: IExecuteFunctions): Promise { + const items = this.getInputData(); + const returnData: IDataObject[] = []; + const length = items.length as unknown as number; + let responseData; + const group = this.getNodeParameter('group', 0) as string; + const tool = this.getNodeParameter('tool', 0) as string; + const additionalOptions = this.getNodeParameter('additionalOptions', 0) as IDataObject; + const dataWebhook = additionalOptions.dataWebhook as string; - const dataWebhook = additionalOptions.dataWebhook as string; + interface LooseObject { + [key: string]: any; // tslint:disable-line:no-any + } - interface LooseObject { - [key: string]: any; - } + const fields = toolParameters.filter((field) => { + return field && field.displayOptions && field.displayOptions.show && field.displayOptions.show.group && field.displayOptions.show.tool && + field.displayOptions.show.group.indexOf(group) !== -1 && field.displayOptions.show.tool.indexOf(tool) !== -1; + }).map((field) => { + return field.name; + }); - const fields = toolParameters.filter((field) => { - return field && field.displayOptions && field.displayOptions.show && field.displayOptions.show.group && field.displayOptions.show.tool && - field.displayOptions.show.group.indexOf(group) !== -1 && field.displayOptions.show.tool.indexOf(tool) !== -1; - }).map((field) => { - return field.name; - }); + const requestPromises = []; + for (let i = 0; i < length; i++) { + const toolKey = tool.replace(/([A-Z]+)/g, '-$1').toLowerCase(); + const body: LooseObject = { + processor: toolKey, + params: {}, + }; - const requestPromises = []; - for (let i = 0; i < length; i++) { - const toolKey = tool.replace(/([A-Z]+)/g, "-$1").toLowerCase(); - const body: LooseObject = { - processor: toolKey, - params: {} - }; + fields.forEach((field) => { + if (field && field.length) { + const data = this.getNodeParameter(field, i) as string; + body.params[field] = data + ''; + } + }); - //console.log(fields); - fields.forEach((field) => { - if (field && field.length) { - const data = this.getNodeParameter(field, i) as string; - //console.log(field, data); - body.params[field] = data + ""; - } - }); + if (dataWebhook && dataWebhook.length) { + body.callback = {}; + } - if (dataWebhook && dataWebhook.length) { - body.callback = {}; - } + if (dataWebhook && dataWebhook.length) { + body.callback.data = dataWebhook; + } - if (dataWebhook && dataWebhook.length) { - body.callback.data = dataWebhook; - } + //Change to multiple requests + responseData = await uprocApiRequest.call(this, 'POST', body); - //Change to multiple requests - responseData = await uprocApiRequest.call(this, 'POST', body); - - if (Array.isArray(responseData)) { - returnData.push.apply(returnData, responseData as IDataObject[]); - } else { - returnData.push(responseData as IDataObject); - } - } - return [this.helpers.returnJsonArray(returnData)]; - } + if (Array.isArray(responseData)) { + returnData.push.apply(returnData, responseData as IDataObject[]); + } else { + returnData.push(responseData as IDataObject); + } + } + return [this.helpers.returnJsonArray(returnData)]; + } }