n8n-nodes-nextcloud-calendar
Version:
n8n Node für die Integration mit Nextcloud Calendar
59 lines • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.findCalendar = findCalendar;
exports.getCalendars = getCalendars;
exports.createCalendar = createCalendar;
exports.deleteCalendar = deleteCalendar;
const client_1 = require("../helpers/client");
async function findCalendar(context, client, calendarName) {
const calendars = await getCalendars(context);
const calendar = calendars.find((cal) => cal.displayName === calendarName);
if (!calendar) {
throw new Error(`Calendar "${calendarName}" not found`);
}
return calendar;
}
async function getCalendars(context) {
const client = await (0, client_1.initClient)(context);
const calendars = await client.fetchCalendars();
return calendars;
}
async function createCalendar(context, data) {
const client = await (0, client_1.initClient)(context);
const calendars = await client.fetchCalendars();
const homeUrl = calendars[0]?.url?.split('/').slice(0, -1).join('/') || '';
await client.createCalendarObject({
calendar: {
url: `${homeUrl}/${data.displayName}/`,
displayName: data.displayName,
},
filename: 'calendar.ics',
iCalString: `BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//n8n//Nextcloud Calendar Node//EN
NAME:${data.displayName}
X-WR-TIMEZONE:${data.timezone || 'UTC'}
END:VCALENDAR`,
});
const newCalendar = {
url: `${homeUrl}/${data.displayName}/`,
displayName: data.displayName,
timezone: data.timezone,
color: data.color,
description: data.description,
};
return newCalendar;
}
async function deleteCalendar(context, calendarName) {
const client = await (0, client_1.initClient)(context);
const calendar = await findCalendar(context, client, calendarName);
await client.deleteCalendarObject({
calendarObject: {
url: calendar.url,
data: '',
etag: '',
},
});
return { success: true };
}
//# sourceMappingURL=calendar.js.map