UNPKG

n8n-nodes-espocrm

Version:

n8n Community Node for EspoCRM

92 lines (91 loc) 3.64 kB
"use strict"; 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;