Skip to content

Commit

Permalink
feat(Metabase Node): Add Metabase Node (#3033)
Browse files Browse the repository at this point in the history
* Boilerplate with new node's version for metabse

* Metabases MVP features

* Added new credential for metabse, added custom auth for metabase

* Fixed bug with one enpoint not working

* Clean up code

* Uniformised the renovate token

* Made two example of responses for review

* Fixed lint issues

* Feature add datasources

* Changed output from databases

* Changed questions data output

* Fixed issue when testing credentials with new node format

* Add the possibility to get raw data

* Removed handle for the metabase meta results, changed export's name

* Add binary extraction for the result data

* Fixed binary download issue

* ⚡ Add preAuthentication method to credentials

* Revert "Added new credential for metabse, added custom auth for metabase"

This reverts commit 5f1b760.

* Revert "Added new credential for metabse, added custom auth for metabase"

This reverts commit 5f1b760.

* Added preAuth and fixed autfixable linting rules

* Fixed linting errors

* Linting fixes

* Remove / at the end of url, and add placeholder for cred url

* Make export to Json retun only json and no binary

* Fix lint issues

* Add action and exception for lint rule

* Remove unnecessary credential file

* ⚡ Simplify and cleanup

Co-authored-by: ricardo <ricardoespinoza105@gmail.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
  • Loading branch information
4 people committed Jul 26, 2022
1 parent b4525d0 commit 81b5828
Show file tree
Hide file tree
Showing 12 changed files with 773 additions and 8 deletions.
8 changes: 5 additions & 3 deletions packages/cli/src/CredentialsHelper.ts
Expand Up @@ -92,7 +92,6 @@ export class CredentialsHelper extends ICredentialsHelper {
if (credentialType.authenticate) {
if (typeof credentialType.authenticate === 'function') {
// Special authentication function is defined

// eslint-disable-next-line @typescript-eslint/no-unsafe-call
return credentialType.authenticate(credentials, requestOptions as IHttpRequestOptions);
}
Expand Down Expand Up @@ -559,7 +558,6 @@ export class CredentialsHelper extends ICredentialsHelper {
nodeToTestWith?: string,
): Promise<INodeCredentialTestResult> {
const credentialTestFunction = this.getCredentialTestFunction(credentialType, nodeToTestWith);

if (credentialTestFunction === undefined) {
return Promise.resolve({
status: 'Error',
Expand Down Expand Up @@ -690,7 +688,6 @@ export class CredentialsHelper extends ICredentialsHelper {
statusCode: error.cause.response.status,
statusMessage: error.cause.response.statusText,
};

if (credentialTestFunction.testRequest.rules) {
// Special testing rules are defined so check all in order
for (const rule of credentialTestFunction.testRequest.rules) {
Expand All @@ -716,6 +713,11 @@ export class CredentialsHelper extends ICredentialsHelper {
`Received HTTP status code: ${errorResponseData.statusCode}`,
};
}
} else if (error.cause.code) {
return {
status: 'Error',
message: error.cause.code,
};
}
Logger.debug('Credential test failed', error);
return {
Expand Down
1 change: 1 addition & 0 deletions packages/nodes-base/credentials/MetabaseApi.credentials.ts
Expand Up @@ -4,6 +4,7 @@ import {
ICredentialTestRequest,
ICredentialType,
IHttpRequestHelper,
IHttpRequestOptions,
INodeProperties,
} from 'n8n-workflow';

Expand Down
59 changes: 59 additions & 0 deletions packages/nodes-base/nodes/Metabase/AlertsDescription.ts
@@ -0,0 +1,59 @@
import { INodeProperties } from 'n8n-workflow';

export const alertsOperations: INodeProperties[] = [
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['alerts'],
},
},
options: [
{
name: 'Get',
value: 'get',
description: 'Get specific alert',
routing: {
request: {
method: 'GET',
url: '={{"/api/alert/" + $parameter.alertId}}',
},
},
action: 'Get an alert',
},
{
name: 'Get All',
value: 'getAll',
description: 'Get all the alerts',
routing: {
request: {
method: 'GET',
url: '/api/alert/',
},
},
action: 'Get all alerts',
},
],
default: 'getAll',
},
];

export const alertsFields: INodeProperties[] = [
{
displayName: 'Alert ID',
name: 'alertId',
type: 'string',
required: true,
placeholder: '0',
displayOptions: {
show: {
resource: ['alerts'],
operation: ['get'],
},
},
default: '',
},
];

0 comments on commit 81b5828

Please sign in to comment.