convert event data to simpler objects

This commit is contained in:
basti76
2018-09-15 15:42:48 +02:00
parent 402be15f8d
commit 4e8147a50b
2 changed files with 23 additions and 5 deletions

View File

@ -3,6 +3,7 @@ module.exports = function (RED) {
let webdav = require('webdav') let webdav = require('webdav')
const fs = require('fs') const fs = require('fs')
const ICAL = require('ical.js'); const ICAL = require('ical.js');
let moment = require('moment');
function NextcloudConfigNode(n) { function NextcloudConfigNode(n) {
RED.nodes.createNode(this, n) RED.nodes.createNode(this, n)
@ -22,6 +23,8 @@ module.exports = function (RED) {
let node = this let node = this
node.on('input', function (msg) { node.on('input', function (msg) {
//dav.debug.enabled = true;
const xhr = new dav.transport.Basic( const xhr = new dav.transport.Basic(
new dav.Credentials({ new dav.Credentials({
username: node.server.credentials.user, username: node.server.credentials.user,
@ -32,7 +35,7 @@ module.exports = function (RED) {
let calDavUri = node.server.address + '/remote.php/dav/calendars/' let calDavUri = node.server.address + '/remote.php/dav/calendars/'
// User // User
calDavUri += node.server.credentials.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) { .then(function (account) {
if (!account.calendars) { if (!account.calendars) {
node.error('Nextcloud:CalDAV -> no calendars found.') node.error('Nextcloud:CalDAV -> no calendars found.')
@ -52,12 +55,12 @@ module.exports = function (RED) {
let component = new ICAL.Component(jCalData); let component = new ICAL.Component(jCalData);
let vevent = component.getFirstSubcomponent('vevent'); let vevent = component.getFirstSubcomponent('vevent');
var event = new ICAL.Event(vevent); var event = new ICAL.Event(vevent);
icsList.payload.data.push(event); icsList.payload.data.push(convertEvent(event));
} catch (error) { } catch (error) {
node.error("Error parsing calendar data: " + error); node.error("Error parsing calendar data: " + error);
} }
}) })
node.send(icsList) node.send(icsList);
}, function () { }, function () {
node.error('Nextcloud:CalDAV -> get ics went wrong.') node.error('Nextcloud:CalDAV -> get ics went wrong.')
}) })
@ -67,6 +70,21 @@ module.exports = function (RED) {
node.error('Nextcloud:CalDAV -> get calendars went wrong.') 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) RED.nodes.registerType('nextcloud-caldav', NextcloudCalDav)

View File

@ -17,9 +17,9 @@
"carddav" "carddav"
], ],
"dependencies": { "dependencies": {
"dav": "^1.7.8", "dav": "^1.8.0",
"ical.js": "^1.2.2", "ical.js": "^1.2.2",
"npm": "^5.8.0", "moment": "^2.22.2",
"webdav": "^1.5.2" "webdav": "^1.5.2"
}, },
"devDependencies": {}, "devDependencies": {},