UNPKG

@ai-growth/n8n-nodes-wordpress

Version:

n8n node for WordPress integration with AI GROWTH - SEO WP plugin

178 lines 9.28 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AIGrowthWordPress = void 0; const n8n_workflow_1 = require("n8n-workflow"); const NodeFields_1 = require("./NodeFields"); const NodeService_1 = require("./NodeService"); const WordPressValidator_1 = require("./WordPressValidator"); class AIGrowthWordPress { constructor() { this.description = { displayName: 'AI GROWTH WordPress', name: 'aiGrowthWordPress', icon: 'file:wordpress.svg', group: ['transform'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Create, read, update and delete WordPress content with AI GROWTH - SEO WP plugin support', defaults: { name: 'AI GROWTH WordPress', color: '#21759b', }, inputs: ['main'], outputs: ['main'], credentials: [ { name: 'wordpressApi', required: true, testedBy: 'wordpressApiTest', }, ], properties: (0, NodeFields_1.getAllNodeFields)(), }; this.methods = { credentialTest: { wordpressApiTest: async function (credential) { console.log('[AI GROWTH WordPress Node] Testing API credentials...'); const credentials = credential.data; const { url, username, password } = credentials; console.log(`[AI GROWTH WordPress Node] Credentials test - URL: ${url}, API Version: v2, Username: ${username}`); if (!url) { console.error('[AI GROWTH WordPress Node] Error: Website URL is required'); return { status: 'Error', message: 'Website URL is required', }; } const baseUrl = url.toString().replace(/\/$/, ''); console.log(`[AI GROWTH WordPress Node] Normalized URL: ${baseUrl}`); try { console.log(`[AI GROWTH WordPress Node] Making test request to ${baseUrl}/wp-json/wp/v2`); const options = { method: 'GET', url: `${baseUrl}/wp-json/wp/v2`, headers: { Authorization: `Basic ${Buffer.from(`${username || ''}:${password || ''}`).toString('base64')}`, }, json: true, }; console.log(`[AI GROWTH WordPress Node] Request options: ${JSON.stringify({ method: options.method, url: options.url, headers: { Authorization: options.headers.Authorization ? 'Basic ***** (credentials redacted)' : 'None' }, }, null, 2)}`); try { const response = await this.helpers.request(options); console.log(`[AI GROWTH WordPress Node] Response received: ${JSON.stringify(response, null, 2)}`); if (!response) { console.error('[AI GROWTH WordPress Node] Error: Invalid response from WordPress API - response is empty'); return { status: 'Error', message: 'Invalid response from WordPress API', }; } // Verificar se a resposta contém os campos esperados if (response.name && response.description) { console.log(`[AI GROWTH WordPress Node] Successfully connected to ${response.name}`); return { status: 'OK', message: `Successfully connected to ${response.name}`, }; } console.log(`[AI GROWTH WordPress Node] Connection successful but unexpected response format: ${JSON.stringify(response, null, 2)}`); return { status: 'OK', message: 'Connection successful!', }; } catch (requestError) { console.error(`[AI GROWTH WordPress Node] Request error: ${requestError.message || 'Unknown error'}`); if (requestError.response) { console.error(`[AI GROWTH WordPress Node] Response status: ${requestError.response.status}`); console.error(`[AI GROWTH WordPress Node] Response data: ${JSON.stringify(requestError.response.data, null, 2)}`); } throw requestError; } } catch (error) { console.error(`[AI GROWTH WordPress Node] Credentials test error:`, error); let errorMessage = 'Could not connect to WordPress API'; if (error.statusCode === 401) { console.error(`[AI GROWTH WordPress Node] Authentication failed (401)`); errorMessage = 'Authentication failed. Please check your credentials.'; } else if (error.message) { console.error(`[AI GROWTH WordPress Node] Connection error: ${error.message}`); errorMessage = `Connection error: ${error.message}`; } const errorDetails = error.response ? { status: error.response.status, data: error.response.data } : { error: String(error) }; console.error(`[AI GROWTH WordPress Node] Error details: ${JSON.stringify(errorDetails, null, 2)}`); return { status: 'Error', message: errorMessage, }; } }, }, }; } async execute() { const items = this.getInputData(); const returnData = []; try { const credentials = await this.getCredentials('wordpressApi'); const nodeService = new NodeService_1.NodeService(this, credentials); const resource = this.getNodeParameter('resource', 0); const operation = this.getNodeParameter('operation', 0); for (let i = 0; i < items.length; i++) { try { const params = WordPressValidator_1.WordPressValidator.getParams(this, i, resource, operation); const result = await nodeService.executeOperation(params, resource, operation); // Formatar saída com base no tipo de operação if (operation === 'getAll') { const formattedResults = nodeService.formatMultipleOutput(result); returnData.push(...formattedResults); } else if (operation === 'delete') { const formattedResult = nodeService.formatBooleanOutput(result, typeof params === 'object' && 'id' in params ? params.id : undefined); returnData.push(...formattedResult); } else { const formattedResult = nodeService.formatSingleOutput(result); returnData.push(...formattedResult); } } catch (error) { // Capturar erros para item individual if (this.continueOnFail()) { // Adicionar erro à saída returnData.push({ json: { error: error instanceof Error ? error.message : String(error), item: i, }, }); continue; } throw error; } } return [returnData]; } catch (error) { // Erro geral ao executar o nó if (this.continueOnFail()) { return [items]; } throw new n8n_workflow_1.NodeOperationError(this.getNode(), error instanceof Error ? error : new Error(String(error))); } } } exports.AIGrowthWordPress = AIGrowthWordPress; // Export default exports.default = AIGrowthWordPress; //# sourceMappingURL=AIGrowthWordPress.js.map