From fe9170e62f96f1d9c0cb64fba003c27fca7d70bb Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Wed, 29 Jan 2020 20:06:47 -0800 Subject: [PATCH] :zap: Minor WooCommerceTrigger-Node improvements --- .../nodes/WooCommerce/GenericFunctions.ts | 21 ++++++++++++++----- .../WooCommerce/WooCommerceTrigger.node.ts | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/packages/nodes-base/nodes/WooCommerce/GenericFunctions.ts b/packages/nodes-base/nodes/WooCommerce/GenericFunctions.ts index 5f390fe4f5..dcdd79aaab 100644 --- a/packages/nodes-base/nodes/WooCommerce/GenericFunctions.ts +++ b/packages/nodes-base/nodes/WooCommerce/GenericFunctions.ts @@ -14,10 +14,10 @@ export async function woocommerceApiRequest(this: IHookFunctions | IExecuteFunct if (credentials === undefined) { throw new Error('No credentials got returned!'); } - const base64credentials = Buffer.from(`${credentials.consumerKey}:${credentials.consumerSecret}`).toString('base64'); let options: OptionsWithUri = { - headers: { - Authorization: `Basic ${base64credentials}`, + auth: { + user: credentials.consumerKey as string, + password: credentials.consumerSecret as string, }, method, qs, @@ -32,7 +32,18 @@ export async function woocommerceApiRequest(this: IHookFunctions | IExecuteFunct try { return await this.helpers.request!(options); } catch (error) { - throw new Error('WooCommerce Error: ' + error); + if (error.statusCode === 401) { + // Return a clear error + throw new Error('The WooCommerce credentials are not valid!'); + } + + if (error.response.body && error.response.body.message) { + // Try to return the error prettier + throw new Error(`WooCommerce Error [${error.statusCode}]: ${error.response.body.message}`); + } + + // If that data does not exist for some reason return the actual error + throw new Error('WooCommerce Error: ' + error.message); } } @@ -45,5 +56,5 @@ export async function woocommerceApiRequest(this: IHookFunctions | IExecuteFunct */ export function getAutomaticSecret(credentials: ICredentialDataDecryptedObject) { const data = `${credentials.consumerKey},${credentials.consumerSecret}`; - return createHash('md5').update(data).digest("hex"); + return createHash('md5').update(data).digest('hex'); } diff --git a/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.ts b/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.ts index c4313d36a0..73123ec3e9 100644 --- a/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.ts +++ b/packages/nodes-base/nodes/WooCommerce/WooCommerceTrigger.node.ts @@ -176,6 +176,6 @@ export class WooCommerceTrigger implements INodeType { workflowData: [ this.helpers.returnJsonArray(req.body), ], - } + }; } }