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
JavaScript
;
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;