@ai-growth/n8n-nodes-wordpress
Version:
n8n node for WordPress integration with AI GROWTH - SEO WP plugin
95 lines • 4.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ErrorHandler = void 0;
const n8n_workflow_1 = require("n8n-workflow");
/**
* Classe para lidar com erros da API
*/
class ErrorHandler {
/**
* Trata erros da API do WordPress
* @param error Erro a ser tratado
* @param execFunctions Funções de execução do n8n
* @param itemIndex Índice do item atual
* @param operationName Nome da operação que falhou
* @returns Node error formatado para o n8n
*/
static handleApiError(error, execFunctions, itemIndex = 0, operationName = 'operation') {
const node = execFunctions.getNode();
let errorMessage = `Failed to execute WordPress ${operationName}`;
// Erros do Axios (API)
if (ErrorHandler.isAxiosError(error)) {
if (error.response) {
// Erro de autenticação
if (error.response.status === 401) {
return new n8n_workflow_1.NodeOperationError(node, 'Authentication failed: Please check your WordPress credentials', {
itemIndex,
description: 'Make sure your username and application password are correct',
});
}
// Erro de permissão
if (error.response.status === 403) {
return new n8n_workflow_1.NodeOperationError(node, 'Permission denied: The WordPress user does not have sufficient permissions', {
itemIndex,
description: 'Please check that your user has the correct WordPress roles',
});
}
// Erro de recurso não encontrado
if (error.response.status === 404) {
return new n8n_workflow_1.NodeOperationError(node, 'Resource not found: The requested WordPress resource does not exist', {
itemIndex,
});
}
// Outros erros do servidor
const serverError = error.response.data && typeof error.response.data === 'object' && 'message' in error.response.data
? error.response.data.message
: error.response.statusText || error.message;
return new n8n_workflow_1.NodeOperationError(node, `Server error (${error.response.status}): ${serverError}`, { itemIndex });
}
// Erro de conexão (sem resposta)
if (error.request) {
return new n8n_workflow_1.NodeOperationError(node, 'Connection error: Failed to connect to WordPress site', {
itemIndex,
description: 'Please check the URL and ensure the WordPress site is online',
});
}
}
// Erro genérico
return new n8n_workflow_1.NodeOperationError(node, `${errorMessage}: ${error.message}`, { itemIndex });
}
/**
* Verifica se um erro é do tipo AxiosError
* @param error Erro a ser verificado
* @returns Verdadeiro se for um AxiosError
*/
static isAxiosError(error) {
return error && error.isAxiosError === true;
}
/**
* Cria um item de resposta de erro
* @param error Erro a ser formatado
* @param itemIndex Índice do item atual
* @returns Dados de execução formatados com erro
*/
static createErrorOutput(error, itemIndex = 0) {
const errorData = {
success: false,
error: true,
message: error.message,
};
if (ErrorHandler.isAxiosError(error) && error.response) {
errorData.statusCode = error.response.status;
errorData.statusText = error.response.statusText;
if (error.response.data) {
// Converter o response.data para um formato seguro
errorData.response = error.response.data;
}
}
return [{
json: errorData,
pairedItem: { item: itemIndex },
}];
}
}
exports.ErrorHandler = ErrorHandler;
//# sourceMappingURL=ErrorHandler.js.map