diff --git a/packages/nodes-base/nodes/Mocean/GenericFunctions.ts b/packages/nodes-base/nodes/Mocean/GenericFunctions.ts index 3951df2deed51..52849300ae7b7 100644 --- a/packages/nodes-base/nodes/Mocean/GenericFunctions.ts +++ b/packages/nodes-base/nodes/Mocean/GenericFunctions.ts @@ -4,7 +4,7 @@ import { } from 'n8n-core'; import { - IDataObject, NodeApiError, NodeOperationError, + IDataObject, JsonObject, NodeApiError, NodeOperationError, } from 'n8n-workflow'; /** @@ -47,6 +47,6 @@ export async function moceanApiRequest(this: IHookFunctions | IExecuteFunctions, try { return await this.helpers.request(options); } catch (error) { - throw new NodeApiError(this.getNode(), error); + throw new NodeApiError(this.getNode(), (error as JsonObject)); } } diff --git a/packages/nodes-base/nodes/Mocean/Mocean.node.ts b/packages/nodes-base/nodes/Mocean/Mocean.node.ts index 6fbc53f6b9c60..f808c612bc192 100644 --- a/packages/nodes-base/nodes/Mocean/Mocean.node.ts +++ b/packages/nodes-base/nodes/Mocean/Mocean.node.ts @@ -1,11 +1,16 @@ import { IExecuteFunctions } from 'n8n-core'; import { + ICredentialsDecrypted, + ICredentialTestFunctions, IDataObject, + INodeCredentialTestResult, INodeExecutionData, INodeType, INodeTypeDescription, + JsonObject, NodeOperationError, } from 'n8n-workflow'; +import { OptionsWithUri } from 'request'; import {moceanApiRequest} from './GenericFunctions'; @@ -14,7 +19,8 @@ export class Mocean implements INodeType { description: INodeTypeDescription = { displayName: 'Mocean', name: 'mocean', - icon: 'file:mocean.png', + subtitle: `={{$parameter["operation"] + ": " + $parameter["resource"]}}`, + icon: 'file:mocean.svg', group: ['transform'], version: 1, description: 'Send SMS and voice messages via Mocean', @@ -27,6 +33,7 @@ export class Mocean implements INodeType { { name: 'moceanApi', required: true, + testedBy: 'moceanApiTest', }, ], properties: [ @@ -36,6 +43,7 @@ export class Mocean implements INodeType { displayName: 'Resource', name: 'resource', type: 'options', + noDataExpression: true, options:[ { name: 'SMS', @@ -52,6 +60,7 @@ export class Mocean implements INodeType { displayName: 'Operation', name: 'operation', type: 'options', + noDataExpression: true, displayOptions: { show: { resource: [ @@ -68,7 +77,7 @@ export class Mocean implements INodeType { }, ], default: 'send', - description: 'The operation to perform.', + description: 'Operation to perform', }, { displayName: 'From', @@ -88,7 +97,7 @@ export class Mocean implements INodeType { ], }, }, - description: 'The number to which to send the message', + description: 'Number to which to send the message', }, { @@ -109,7 +118,7 @@ export class Mocean implements INodeType { ], }, }, - description: 'The number from which to send the message', + description: 'Number from which to send the message', }, { @@ -169,7 +178,7 @@ export class Mocean implements INodeType { ], }, }, - description: 'The message to send', + description: 'Message to send', }, { @@ -192,7 +201,41 @@ export class Mocean implements INodeType { description: 'Delivery report URL', }, ], + }; + + methods = { + credentialTest: { + async moceanApiTest(this: ICredentialTestFunctions, credential: ICredentialsDecrypted): Promise { + const credentials = credential.data; + + const body: IDataObject = {}; + body['mocean-api-key'] = credentials!['mocean-api-key']; + body['mocean-api-secret'] = credentials!['mocean-api-secret']; + body['mocean-to'] = '6012356789'; + body['mocean-resp-format'] = 'JSON'; + + const options = { + method: 'POST', + form: body, + qs: {}, + uri: `https://rest.moceanapi.com/rest/2/nl`, + json: true, + }; + try { + await this.helpers.request!(options); + } catch (error) { + return { + status: 'Error', + message: `Connection details not valid: ${(error as JsonObject).message}`, + }; + } + return { + status: 'OK', + message: 'Authentication successful!', + }; + }, + }, }; @@ -262,7 +305,7 @@ export class Mocean implements INodeType { } } catch (error) { if (this.continueOnFail()) { - returnData.push({ error: error.message }); + returnData.push({ error: (error as JsonObject).message }); continue; } throw error; diff --git a/packages/nodes-base/nodes/Mocean/mocean.png b/packages/nodes-base/nodes/Mocean/mocean.png deleted file mode 100644 index f660c71e0a0f2..0000000000000 Binary files a/packages/nodes-base/nodes/Mocean/mocean.png and /dev/null differ diff --git a/packages/nodes-base/nodes/Mocean/mocean.svg b/packages/nodes-base/nodes/Mocean/mocean.svg new file mode 100644 index 0000000000000..ed5d0de24ef70 --- /dev/null +++ b/packages/nodes-base/nodes/Mocean/mocean.svg @@ -0,0 +1,24 @@ + + + + +Created by potrace 1.16, written by Peter Selinger 2001-2019 + + + + +