n8n-nodes-nextcloud-calendar
Version:
n8n Node für die Integration mit Nextcloud Calendar
50 lines • 1.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatEvent = formatEvent;
const uuid_1 = require("uuid");
function formatEvent(eventData) {
const uid = (0, uuid_1.v4)();
const now = new Date().toISOString().replace(/[-:.]/g, '');
let iCalString = `BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//n8n//Nextcloud Calendar Node//EN
BEGIN:VEVENT
UID:${uid}
DTSTAMP:${now.substring(0, 15)}Z
DTSTART:${eventData.start.replace(/[-:.]/g, '')}
DTEND:${eventData.end.replace(/[-:.]/g, '')}
SUMMARY:${eventData.title}
SEQUENCE:0
STATUS:CONFIRMED\n`;
if (eventData.description) {
iCalString += `DESCRIPTION:${eventData.description.replace(/\\n/g, '\\n')}\n`;
}
if (eventData.location) {
iCalString += `LOCATION:${eventData.location}\n`;
}
iCalString += 'CLASS:PUBLIC\n';
iCalString += `X-NC-GROUP-ID:${uid}\n`;
if (eventData.organizer) {
iCalString += `ORGANIZER;CN=${eventData.organizer.displayName}:mailto:${eventData.organizer.email}\n`;
}
if (eventData.attendees && eventData.attendees.length > 0) {
eventData.attendees.forEach((attendee) => {
let attendeeString = 'ATTENDEE;CUTYPE=INDIVIDUAL';
if (attendee.displayName) {
attendeeString += `;CN=${attendee.displayName}`;
}
if (attendee.role) {
attendeeString += `;ROLE=${attendee.role}`;
}
if (attendee.rsvp) {
attendeeString += ';RSVP=TRUE';
}
attendeeString += `:mailto:${attendee.email}\n`;
iCalString += attendeeString;
});
}
iCalString += `END:VEVENT
END:VCALENDAR`;
return iCalString;
}
//# sourceMappingURL=formatter.js.map