n8n-nodes-nextcloud-calendar
Version:
n8n Node für die Integration mit Nextcloud Calendar
61 lines • 2.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deleteCalendar = exports.createCalendar = exports.getCalendars = exports.findCalendar = void 0;
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;
}
exports.findCalendar = findCalendar;
async function getCalendars(context) {
const client = await (0, client_1.initClient)(context);
const calendars = await client.fetchCalendars();
return calendars;
}
exports.getCalendars = getCalendars;
async function createCalendar(context, data) {
var _a, _b;
const client = await (0, client_1.initClient)(context);
const calendars = await client.fetchCalendars();
const homeUrl = ((_b = (_a = calendars[0]) === null || _a === void 0 ? void 0 : _a.url) === null || _b === void 0 ? void 0 : _b.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;
}
exports.createCalendar = createCalendar;
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 };
}
exports.deleteCalendar = deleteCalendar;
//# sourceMappingURL=calendar.js.map