mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-26 21:19:43 -08:00
e77fd5d286
Ensure all errors in `nodes-base` are `ApplicationError` or children of it and contain no variables in the message, to continue normalizing all the backend errors we report to Sentry. Also, skip reporting to Sentry errors from user input and from external APIs. In future we should refine `ApplicationError` to more specific errors. Follow-up to: [#7877](https://github.com/n8n-io/n8n/pull/7877) - [x] Test workflows: https://github.com/n8n-io/n8n/actions/runs/7084627970 - [x] e2e: https://github.com/n8n-io/n8n/actions/runs/7084936861 --------- Co-authored-by: Michael Kret <michael.k@radency.com>
57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import type { OptionsWithUri } from 'request';
|
|
|
|
import { ApplicationError } from 'n8n-workflow';
|
|
|
|
import type {
|
|
IDataObject,
|
|
IExecuteFunctions,
|
|
IHookFunctions,
|
|
ILoadOptionsFunctions,
|
|
IWebhookFunctions,
|
|
} from 'n8n-workflow';
|
|
|
|
export async function mailCheckApiRequest(
|
|
this: IWebhookFunctions | IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions,
|
|
method: string,
|
|
resource: string,
|
|
|
|
body: any = {},
|
|
qs: IDataObject = {},
|
|
uri?: string,
|
|
headers: IDataObject = {},
|
|
option: IDataObject = {},
|
|
): Promise<any> {
|
|
const credentials = await this.getCredentials('mailcheckApi');
|
|
|
|
let options: OptionsWithUri = {
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
Authorization: `Bearer ${credentials.apiKey}`,
|
|
},
|
|
method,
|
|
body,
|
|
qs,
|
|
uri: uri || `https://api.mailcheck.co/v1${resource}`,
|
|
json: true,
|
|
};
|
|
try {
|
|
options = Object.assign({}, options, option);
|
|
if (Object.keys(headers).length !== 0) {
|
|
options.headers = Object.assign({}, options.headers, headers);
|
|
}
|
|
if (Object.keys(body as IDataObject).length === 0) {
|
|
delete options.body;
|
|
}
|
|
return await this.helpers.request.call(this, options);
|
|
} catch (error) {
|
|
if (error.response?.body?.message) {
|
|
// Try to return the error prettier
|
|
throw new ApplicationError(
|
|
`Mailcheck error response [${error.statusCode}]: ${error.response.body.message}`,
|
|
{ level: 'warning' },
|
|
);
|
|
}
|
|
throw error;
|
|
}
|
|
}
|