N8N-4126 credentials injection and testing on specific nodes (#3816)

* Add credential injection and testing to Lemlist, Uproc, Supabase, Segment, Phantombuster, Mailgun and Dropcontact
This commit is contained in:
agobrech
2022-08-24 10:26:48 +02:00
committed by GitHub
parent 5285fc1de6
commit 76f9ad8bae
15 changed files with 167 additions and 114 deletions

View File

@@ -1,4 +1,9 @@
import { ICredentialType, NodePropertyTypes } from 'n8n-workflow';
import {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
NodePropertyTypes,
} from 'n8n-workflow';
export class DropcontactApi implements ICredentialType {
name = 'dropcontactApi';
@@ -12,4 +17,23 @@ export class DropcontactApi implements ICredentialType {
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'user-agent': 'n8n',
'X-Access-Token': '={{$credentials.apiKey}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: 'https://api.dropcontact.io',
url: '/batch',
method: 'POST',
body: {
data: [{ email: '' }],
},
},
};
}

View File

@@ -1,4 +1,10 @@
import { ICredentialType, INodeProperties } from 'n8n-workflow';
import {
ICredentialDataDecryptedObject,
ICredentialTestRequest,
ICredentialType,
IHttpRequestOptions,
INodeProperties,
} from 'n8n-workflow';
export class LemlistApi implements ICredentialType {
name = 'lemlistApi';
@@ -12,4 +18,19 @@ export class LemlistApi implements ICredentialType {
default: '',
},
];
async authenticate(
credentials: ICredentialDataDecryptedObject,
requestOptions: IHttpRequestOptions,
): Promise<IHttpRequestOptions> {
const encodedApiKey = Buffer.from(':' + credentials.apiKey).toString('base64');
requestOptions.headers!['Authorization'] = `Basic ${encodedApiKey}`;
requestOptions.headers!['user-agent'] = 'n8n';
return requestOptions;
}
test: ICredentialTestRequest = {
request: {
baseURL: 'https://api.lemlist.com/api',
url: '/campaigns',
},
};
}

View File

@@ -1,4 +1,9 @@
import { ICredentialType, INodeProperties } from 'n8n-workflow';
import {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
export class MailgunApi implements ICredentialType {
name = 'mailgunApi';
@@ -35,4 +40,19 @@ export class MailgunApi implements ICredentialType {
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
auth: {
username: 'api',
password: '={{$credentials.apiKey}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: '=https://{{$credentials.apiDomain}}/v3',
url: '/domains',
},
};
}

View File

@@ -1,4 +1,9 @@
import { ICredentialType, INodeProperties } from 'n8n-workflow';
import {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
export class PhantombusterApi implements ICredentialType {
name = 'phantombusterApi';
@@ -12,4 +17,18 @@ export class PhantombusterApi implements ICredentialType {
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
'X-Phantombuster-Key': '={{$credentials.apiKey}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: 'https://api.phantombuster.com/api/v2',
url: '/agents/fetch-all',
},
};
}

View File

@@ -1,4 +1,9 @@
import { ICredentialType, INodeProperties } from 'n8n-workflow';
import {
ICredentialDataDecryptedObject,
ICredentialType,
IHttpRequestOptions,
INodeProperties,
} from 'n8n-workflow';
export class SegmentApi implements ICredentialType {
name = 'segmentApi';
@@ -12,4 +17,12 @@ export class SegmentApi implements ICredentialType {
default: '',
},
];
async authenticate(
credentials: ICredentialDataDecryptedObject,
requestOptions: IHttpRequestOptions,
): Promise<IHttpRequestOptions> {
const base64Key = Buffer.from(`${credentials.writekey}:`).toString('base64');
requestOptions.headers!['Authorization'] = `Basic ${base64Key}`;
return requestOptions;
}
}

View File

@@ -1,4 +1,9 @@
import { ICredentialType, INodeProperties } from 'n8n-workflow';
import {
IAuthenticateGeneric,
ICredentialTestRequest,
ICredentialType,
INodeProperties,
} from 'n8n-workflow';
export class SupabaseApi implements ICredentialType {
name = 'supabaseApi';
@@ -19,4 +24,22 @@ export class SupabaseApi implements ICredentialType {
default: '',
},
];
authenticate: IAuthenticateGeneric = {
type: 'generic',
properties: {
headers: {
apikey: '={{$credentials.serviceRole}}',
Authorization: '=Bearer {{$credentials.serviceRole}}',
},
},
};
test: ICredentialTestRequest = {
request: {
baseURL: '={{$credentials.host}}/rest/v1',
headers: {
Prefer: 'return=representation',
},
url: '/',
},
};
}

View File

@@ -1,4 +1,10 @@
import { ICredentialType, INodeProperties } from 'n8n-workflow';
import {
ICredentialDataDecryptedObject,
ICredentialTestRequest,
ICredentialType,
IHttpRequestOptions,
INodeProperties,
} from 'n8n-workflow';
export class UProcApi implements ICredentialType {
name = 'uprocApi';
@@ -19,4 +25,22 @@ export class UProcApi implements ICredentialType {
default: '',
},
];
async authenticate(
credentials: ICredentialDataDecryptedObject,
requestOptions: IHttpRequestOptions,
): Promise<IHttpRequestOptions> {
const token = Buffer.from(`${credentials.email}:${credentials.apiKey}`).toString('base64');
requestOptions.headers = {
...requestOptions.headers,
Authorization: `Basic ${token}`,
};
return requestOptions;
}
test: ICredentialTestRequest = {
request: {
baseURL: 'https://api.uproc.io/api/v2',
url: '/profile',
method: 'GET',
},
};
}