n8n-nodes-espocrm
Version:
n8n Community Node for EspoCRM
92 lines (91 loc) • 3.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ErrorHandler = void 0;
const n8n_workflow_1 = require("n8n-workflow");
class ErrorHandler {
static handleApiError(context, error, operation) {
let errorMessage = `EspoCRM ${operation} Error: `;
if (error instanceof Error) {
// Standard Error Object
if (error.message.includes('ECONNREFUSED')) {
errorMessage += 'Connection refused - Check your EspoCRM URL';
}
else if (error.message.includes('ENOTFOUND')) {
errorMessage += 'Host not found - Check your EspoCRM URL';
}
else if (error.message.includes('ETIMEDOUT')) {
errorMessage += 'Connection timeout - EspoCRM server is not responding';
}
else {
errorMessage += error.message;
}
}
else if (typeof error === 'object' && error !== null) {
// HTTP Response Error
const errorObj = error;
if (errorObj.response) {
const statusCode = errorObj.response.status || errorObj.response.statusCode;
const responseBody = errorObj.response.data || errorObj.response.body;
switch (statusCode) {
case 400:
errorMessage += 'Bad Request - Check your input parameters';
break;
case 401:
errorMessage += 'Unauthorized - Check your API credentials';
break;
case 403:
errorMessage += 'Forbidden - Insufficient permissions';
break;
case 404:
errorMessage += 'Not Found - The requested resource does not exist';
break;
case 429:
errorMessage += 'Rate Limit Exceeded - Please try again later';
break;
case 500:
errorMessage += 'Internal Server Error - EspoCRM server error';
break;
default:
errorMessage += `HTTP ${statusCode}`;
}
if (responseBody && typeof responseBody === 'object') {
if (responseBody.message) {
errorMessage += ` - ${responseBody.message}`;
}
else if (responseBody.error) {
errorMessage += ` - ${responseBody.error}`;
}
}
}
else if (errorObj.code) {
errorMessage += `Network error: ${errorObj.code}`;
}
else {
errorMessage += 'Unknown error occurred';
}
}
else {
// Primitive error value
errorMessage += String(error);
}
throw new n8n_workflow_1.NodeOperationError(context.getNode(), errorMessage);
}
static validateRequiredFields(data, requiredFields) {
const missingFields = [];
for (const field of requiredFields) {
if (!data[field] || (typeof data[field] === 'string' && !data[field].trim())) {
missingFields.push(field);
}
}
return missingFields;
}
static safeStringify(obj) {
try {
return JSON.stringify(obj);
}
catch {
return String(obj);
}
}
}
exports.ErrorHandler = ErrorHandler;