UNPKG

n8n-nodes-nextcloud-deck

Version:

n8n Node für die Integration mit Nextcloud Deck - AI Agent Tool Support

284 lines (283 loc) 12.1 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.NodeListSearch = exports.NodeLoadOptions = void 0; const boardActions = __importStar(require("../actions/board")); const stackActions = __importStar(require("../actions/stack")); const cardActions = __importStar(require("../actions/card")); const api_1 = require("./api"); class NodeLoadOptions { static async getBoards() { try { const boards = await boardActions.getBoards.call(this); if (!boards || boards.length === 0) { return [{ name: 'Keine Boards gefunden', value: '' }]; } return boards.map((board) => ({ name: board.title, value: board.id?.toString() || '', })); } catch (_error) { return [{ name: 'Fehler beim Laden der Boards', value: '' }]; } } static async getStacks() { try { const boardIdString = this.getCurrentNodeParameter('boardId'); if (!boardIdString) { return [{ name: 'Bitte wählen Sie zuerst ein Board', value: '' }]; } const boardId = parseInt(boardIdString, 10); if (isNaN(boardId)) { return [{ name: 'Ungültige Board-ID', value: '' }]; } const stacks = await stackActions.getStacks.call(this, boardId); if (!stacks || stacks.length === 0) { return [{ name: 'Keine Stacks gefunden', value: '' }]; } return stacks.map((stack) => ({ name: stack.title, value: stack.id?.toString() || '', })); } catch (_error) { return [{ name: 'Fehler beim Laden der Stacks', value: '' }]; } } static async getLabels() { try { const boardParam = this.getCurrentNodeParameter('boardId'); let boardId; if (typeof boardParam === 'object' && boardParam !== null) { const boardResourceLocator = boardParam; boardId = parseInt(boardResourceLocator.value, 10); } else { boardId = parseInt(boardParam, 10); } if (!boardId || isNaN(boardId)) { return [{ name: 'Bitte wählen Sie zuerst ein Board', value: '' }]; } const labels = await boardActions.getLabels.call(this, boardId); if (!labels || labels.length === 0) { return [{ name: 'Keine Labels gefunden', value: '' }]; } return labels.map((label) => ({ name: label.title, value: label.id?.toString() || '', })); } catch (_error) { return [{ name: 'Fehler beim Laden der Labels', value: '' }]; } } } exports.NodeLoadOptions = NodeLoadOptions; class NodeListSearch { static async getBoards(filter) { try { const boards = await boardActions.getBoards.call(this); if (!boards || boards.length === 0) { return { results: [{ name: 'Keine Boards gefunden', value: '' }] }; } let filteredBoards = boards; if (filter && filter.trim().length > 0) { const normalized = filter.toLowerCase(); filteredBoards = boards.filter(board => board.title.toLowerCase().includes(normalized)); } return { results: filteredBoards.map((board) => ({ name: board.title, value: board.id?.toString() || '', })) }; } catch (_error) { return { results: [{ name: 'Fehler beim Laden der Boards', value: '' }] }; } } static async getStacks(filter) { try { const boardParam = this.getCurrentNodeParameter('boardId'); let boardId; if (typeof boardParam === 'object' && boardParam !== null) { const boardResourceLocator = boardParam; boardId = parseInt(boardResourceLocator.value, 10); } else { boardId = parseInt(boardParam, 10); } if (!boardId || isNaN(boardId)) { return { results: [{ name: 'Bitte wählen Sie zuerst ein Board', value: '' }] }; } const stacks = await stackActions.getStacks.call(this, boardId); if (!stacks || stacks.length === 0) { return { results: [{ name: 'Keine Stacks gefunden', value: '' }] }; } let filteredStacks = stacks; if (filter && filter.trim().length > 0) { const normalized = filter.toLowerCase(); filteredStacks = stacks.filter(stack => stack.title.toLowerCase().includes(normalized)); } return { results: filteredStacks.map((stack) => ({ name: stack.title, value: stack.id?.toString() || '', })) }; } catch (_error) { return { results: [{ name: 'Fehler beim Laden der Stacks', value: '' }] }; } } static async getCards(filter) { try { const boardParam = this.getCurrentNodeParameter('boardId'); const stackParam = this.getCurrentNodeParameter('stackId'); let boardId; let stackId; if (typeof boardParam === 'object' && boardParam !== null) { const boardResourceLocator = boardParam; boardId = parseInt(boardResourceLocator.value, 10); } else { boardId = parseInt(boardParam, 10); } if (typeof stackParam === 'object' && stackParam !== null) { const stackResourceLocator = stackParam; stackId = parseInt(stackResourceLocator.value, 10); } else { stackId = parseInt(stackParam, 10); } if (!boardId || isNaN(boardId) || !stackId || isNaN(stackId)) { return { results: [{ name: 'Bitte wählen Sie zuerst Board und Stack', value: '' }] }; } const cards = await cardActions.getCards.call(this, boardId, stackId); if (!cards || cards.length === 0) { return { results: [{ name: 'Keine Karten gefunden', value: '' }] }; } let filteredCards = cards; if (filter && filter.trim().length > 0) { const normalized = filter.toLowerCase(); filteredCards = cards.filter(card => card.title.toLowerCase().includes(normalized)); } return { results: filteredCards.map((card) => ({ name: card.title, value: card.id?.toString() || '', })) }; } catch (_error) { return { results: [{ name: 'Fehler beim Laden der Karten', value: '' }] }; } } static async getUsers(filter) { try { const credentials = await this.getCredentials('nextcloudDeckApi'); const currentUser = credentials.username; const results = []; const currentUserDisplayName = `${currentUser} (Sie selbst)`; results.push({ name: currentUserDisplayName, value: currentUser }); try { const searchTerm = filter || ''; const endpoint = `/sharees?search=${encodeURIComponent(searchTerm)}&itemType=0&perPage=50`; const response = await api_1.nextcloudShareeApiRequest.call(this, 'GET', endpoint); const shareeData = response; if (shareeData.users && shareeData.users.length > 0) { for (const user of shareeData.users) { if (user.value.shareWith !== currentUser) { results.push({ name: user.value.shareWithDisplayName || user.value.shareWith, value: user.value.shareWith, }); } } } } catch (shareeError) { try { const usersResponse = await api_1.nextcloudOcsUsersApiRequest.call(this, 'GET', '/users'); const usersData = usersResponse; if (usersData.users && usersData.users.length > 0) { for (const userId of usersData.users) { if (userId !== currentUser) { if (!filter || userId.toLowerCase().includes(filter.toLowerCase())) { results.push({ name: userId, value: userId, }); } } } } } catch (usersError) { } } const uniqueResults = results.filter((result, index, self) => index === self.findIndex(r => r.value === result.value)).slice(0, 50); return { results: uniqueResults }; } catch (_error) { return { results: [{ name: 'Fehler beim Laden der Benutzer', value: '' }] }; } } static async getLabels(filter) { try { const boardParam = this.getCurrentNodeParameter('boardId'); let boardId; if (typeof boardParam === 'object' && boardParam !== null) { const boardResourceLocator = boardParam; boardId = parseInt(boardResourceLocator.value, 10); } else { boardId = parseInt(boardParam, 10); } if (!boardId || isNaN(boardId)) { return { results: [{ name: 'Bitte wählen Sie zuerst ein Board', value: '' }] }; } const labels = await boardActions.getLabels.call(this, boardId); if (!labels || labels.length === 0) { return { results: [{ name: 'Keine Labels gefunden', value: '' }] }; } let filteredLabels = labels; if (filter && filter.trim().length > 0) { const normalized = filter.toLowerCase(); filteredLabels = labels.filter(label => label.title.toLowerCase().includes(normalized)); } const results = filteredLabels.map((label) => ({ name: label.title, value: label.id?.toString() || '', })); return { results }; } catch (_error) { return { results: [{ name: 'Fehler beim Laden der Labels', value: '' }] }; } } } exports.NodeListSearch = NodeListSearch;