UNPKG

@ai-growth/wordpress

Version:

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

222 lines (221 loc) 12.4 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.WordPressNode = void 0; var n8n_workflow_1 = require("n8n-workflow"); var NodeFields_1 = require("./NodeFields"); var NodeService_1 = require("./NodeService"); var WordPressValidator_1 = require("./WordPressValidator"); var WordPressNode = /** @class */ (function () { function WordPressNode() { this.description = { displayName: 'WordPress', name: 'wordpress', icon: 'file:wordpress.svg', group: ['output', 'input'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Create, read, update and delete WordPress content with AI GROWTH - SEO WP plugin support', defaults: { name: 'WordPress', color: '#21759b', }, inputs: ['main'], outputs: ['main'], credentials: [ { name: 'wordpressApi', required: true, testedBy: 'wordpressApiTest', }, ], properties: (0, NodeFields_1.getAllNodeFields)(), }; this.methods = { credentialTest: { wordpressApiTest: function (credential) { return __awaiter(this, void 0, void 0, function () { var credentials, url, apiVersion, username, password, baseUrl, options, response, error_1, errorMessage; return __generator(this, function (_a) { switch (_a.label) { case 0: credentials = credential.data; url = credentials.url, apiVersion = credentials.apiVersion, username = credentials.username, password = credentials.password; if (!url) { return [2 /*return*/, { status: 'Error', message: 'Website URL is required', }]; } baseUrl = url.toString().replace(/\/$/, ''); _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); options = { method: 'GET', url: "".concat(baseUrl, "/wp-json/wp/").concat(apiVersion || 'v2'), headers: { Authorization: "Basic ".concat(Buffer.from("".concat(username || '', ":").concat(password || '')).toString('base64')), }, json: true, }; return [4 /*yield*/, this.helpers.request(options)]; case 2: response = _a.sent(); if (!response) { return [2 /*return*/, { status: 'Error', message: 'Invalid response from WordPress API', }]; } // Verificar se a resposta contém os campos esperados if (response.name && response.description) { return [2 /*return*/, { status: 'OK', message: "Successfully connected to ".concat(response.name), }]; } return [2 /*return*/, { status: 'OK', message: 'Connection successful!', }]; case 3: error_1 = _a.sent(); errorMessage = 'Could not connect to WordPress API'; if (error_1.statusCode === 401) { errorMessage = 'Authentication failed. Please check your credentials.'; } else if (error_1.message) { errorMessage = "Connection error: ".concat(error_1.message); } return [2 /*return*/, { status: 'Error', message: errorMessage, }]; case 4: return [2 /*return*/]; } }); }); }, }, }; } WordPressNode.prototype.execute = function () { return __awaiter(this, void 0, void 0, function () { var items, returnData, credentials, nodeService, resource, operation, i, params, result, formattedResults, formattedResult, formattedResult, error_2, error_3; return __generator(this, function (_a) { switch (_a.label) { case 0: items = this.getInputData(); returnData = []; _a.label = 1; case 1: _a.trys.push([1, 9, , 10]); return [4 /*yield*/, this.getCredentials('wordpressApi')]; case 2: credentials = _a.sent(); nodeService = new NodeService_1.NodeService(this, credentials); resource = this.getNodeParameter('resource', 0); operation = this.getNodeParameter('operation', 0); i = 0; _a.label = 3; case 3: if (!(i < items.length)) return [3 /*break*/, 8]; _a.label = 4; case 4: _a.trys.push([4, 6, , 7]); params = WordPressValidator_1.WordPressValidator.getParams(this, i, resource, operation); return [4 /*yield*/, nodeService.executeOperation(params, resource, operation)]; case 5: result = _a.sent(); // Formatar saída com base no tipo de operação if (operation === 'getAll') { formattedResults = nodeService.formatMultipleOutput(result); returnData = __spreadArray(__spreadArray([], returnData, true), formattedResults, true); } else if (operation === 'delete') { formattedResult = nodeService.formatBooleanOutput(result, typeof params === 'object' && 'id' in params ? params.id : undefined); returnData = __spreadArray(__spreadArray([], returnData, true), formattedResult, true); } else { formattedResult = nodeService.formatSingleOutput(result); returnData = __spreadArray(__spreadArray([], returnData, true), formattedResult, true); } return [3 /*break*/, 7]; case 6: error_2 = _a.sent(); // Capturar erros para item individual if (this.continueOnFail()) { // Adicionar erro à saída returnData.push({ json: { error: error_2 instanceof Error ? error_2.message : String(error_2), item: i, }, }); return [3 /*break*/, 7]; } throw error_2; case 7: i++; return [3 /*break*/, 3]; case 8: return [2 /*return*/, [returnData]]; case 9: error_3 = _a.sent(); // Erro geral ao executar o nó if (this.continueOnFail()) { return [2 /*return*/, [items]]; } throw new n8n_workflow_1.NodeOperationError(this.getNode(), error_3 instanceof Error ? error_3 : new Error(String(error_3))); case 10: return [2 /*return*/]; } }); }); }; return WordPressNode; }()); exports.WordPressNode = WordPressNode;