@ai-growth/wordpress
Version:
n8n node for WordPress integration with AI GROWTH - SEO WP plugin
101 lines (100 loc) • 4.55 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ErrorHandler = void 0;
var n8n_workflow_1 = require("n8n-workflow");
/**
* Classe para lidar com erros da API
*/
var ErrorHandler = /** @class */ (function () {
function 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
*/
ErrorHandler.handleApiError = function (error, execFunctions, itemIndex, operationName) {
if (itemIndex === void 0) { itemIndex = 0; }
if (operationName === void 0) { operationName = 'operation'; }
var node = execFunctions.getNode();
var errorMessage = "Failed to execute WordPress ".concat(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: 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: 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: itemIndex,
});
}
// Outros erros do servidor
var 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 (".concat(error.response.status, "): ").concat(serverError), { itemIndex: 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: itemIndex,
description: 'Please check the URL and ensure the WordPress site is online',
});
}
}
// Erro genérico
return new n8n_workflow_1.NodeOperationError(node, "".concat(errorMessage, ": ").concat(error.message), { itemIndex: itemIndex });
};
/**
* Verifica se um erro é do tipo AxiosError
* @param error Erro a ser verificado
* @returns Verdadeiro se for um AxiosError
*/
ErrorHandler.isAxiosError = function (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
*/
ErrorHandler.createErrorOutput = function (error, itemIndex) {
if (itemIndex === void 0) { itemIndex = 0; }
var 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 },
}];
};
return ErrorHandler;
}());
exports.ErrorHandler = ErrorHandler;