diff --git a/nextcloud.js b/nextcloud.js index 2ace7ed..6574075 100644 --- a/nextcloud.js +++ b/nextcloud.js @@ -3,6 +3,7 @@ module.exports = function (RED) { let webdav = require('webdav') const fs = require('fs') const ICAL = require('ical.js'); + let moment = require('moment'); function NextcloudConfigNode(n) { RED.nodes.createNode(this, n) @@ -22,6 +23,8 @@ module.exports = function (RED) { let node = this node.on('input', function (msg) { + + //dav.debug.enabled = true; const xhr = new dav.transport.Basic( new dav.Credentials({ username: node.server.credentials.user, @@ -32,7 +35,7 @@ module.exports = function (RED) { let calDavUri = node.server.address + '/remote.php/dav/calendars/' // User calDavUri += node.server.credentials.user + '/' - dav.createAccount({ server: calDavUri, xhr: xhr }) + dav.createAccount({ server: calDavUri, xhr: xhr, loadCollections: true, loadObjects: false }) .then(function (account) { if (!account.calendars) { node.error('Nextcloud:CalDAV -> no calendars found.') @@ -52,12 +55,12 @@ module.exports = function (RED) { let component = new ICAL.Component(jCalData); let vevent = component.getFirstSubcomponent('vevent'); var event = new ICAL.Event(vevent); - icsList.payload.data.push(event); + icsList.payload.data.push(convertEvent(event)); } catch (error) { node.error("Error parsing calendar data: " + error); } }) - node.send(icsList) + node.send(icsList); }, function () { node.error('Nextcloud:CalDAV -> get ics went wrong.') }) @@ -67,6 +70,21 @@ module.exports = function (RED) { node.error('Nextcloud:CalDAV -> get calendars went wrong.') }) }) + + function convertEvent(event) { + let retVal = {}; + retVal.start = event.startDate.toString(); + retVal.end = event.endDate.toString(); + retVal.summary = event.summary || ''; + retVal.description = event.description || ''; + retVal.attendees = event.attendees; + retVal.duration = event.duration; + retVal.location = event.location || ''; + retVal.organizer = event.organizer || ''; + retVal.uid = event.uid || ''; + retVal.isRecurring = event.isRecurring(); + return retVal; + } } RED.nodes.registerType('nextcloud-caldav', NextcloudCalDav) diff --git a/package.json b/package.json index dd2eeb8..589c26c 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,9 @@ "carddav" ], "dependencies": { - "dav": "^1.7.8", + "dav": "^1.8.0", "ical.js": "^1.2.2", - "npm": "^5.8.0", + "moment": "^2.22.2", "webdav": "^1.5.2" }, "devDependencies": {},