feat(Hubspot): Add support for Private App Token Authentication

* add Hubspot Private App Token Authentication

*  Add credential verification

*  Rename app token

Co-authored-by: Rene Wagner <wagner@villacircle.com>
Co-authored-by: Jan Oberhauser <janober@users.noreply.github.com>
This commit is contained in:
Ricardo Espinoza
2022-03-13 06:52:47 -04:00
committed by GitHub
parent 2ff13a6842
commit f73100a0bd
3 changed files with 68 additions and 5 deletions

View File

@@ -3,12 +3,17 @@ import {
} from 'n8n-core';
import {
ICredentialDataDecryptedObject,
ICredentialsDecrypted,
ICredentialTestFunctions,
IDataObject,
ILoadOptionsFunctions,
INodeCredentialTestResult,
INodeExecutionData,
INodePropertyOptions,
INodeType,
INodeTypeDescription,
JsonObject,
NodeOperationError,
} from 'n8n-workflow';
@@ -71,6 +76,9 @@ import {
snakeCase,
} from 'change-case';
import {
validateCredentials
} from './GenericFunctions';
export class Hubspot implements INodeType {
description: INodeTypeDescription = {
displayName: 'HubSpot',
@@ -89,6 +97,7 @@ export class Hubspot implements INodeType {
{
name: 'hubspotApi',
required: true,
testedBy: 'hubspotApiTest',
displayOptions: {
show: {
authentication: [
@@ -100,6 +109,7 @@ export class Hubspot implements INodeType {
{
name: 'hubspotAppToken',
required: true,
testedBy: 'hubspotApiTest',
displayOptions: {
show: {
authentication: [
@@ -131,7 +141,7 @@ export class Hubspot implements INodeType {
value: 'apiKey',
},
{
name: 'App Token',
name: 'APP Token',
value: 'appToken',
},
{
@@ -204,6 +214,26 @@ export class Hubspot implements INodeType {
};
methods = {
credentialTest: {
async hubspotApiTest(this: ICredentialTestFunctions, credential: ICredentialsDecrypted): Promise<INodeCredentialTestResult> {
try {
await validateCredentials.call(this, credential.data as ICredentialDataDecryptedObject);
} catch (error) {
const err = error as JsonObject;
if (err.statusCode === 401) {
return {
status: 'Error',
message: `Invalid credentials`,
};
}
}
return {
status: 'OK',
message: 'Authentication successful',
};
},
},
loadOptions: {
/* -------------------------------------------------------------------------- */
/* CONTACT */
@@ -938,7 +968,7 @@ export class Hubspot implements INodeType {
}
} catch (error) {
if (this.continueOnFail()) {
returnData.push({ error: error.message });
returnData.push({ error: (error as JsonObject).message });
} else {
throw error;
}
@@ -2526,7 +2556,7 @@ export class Hubspot implements INodeType {
}
} catch (error) {
if (this.continueOnFail()) {
returnData.push({ error: error.message });
returnData.push({ error: (error as JsonObject).message });
continue;
}
throw error;