use ical.js to parse calendar data
This commit is contained in:
17
nextcloud.js
17
nextcloud.js
@ -2,6 +2,7 @@ module.exports = function(RED) {
|
|||||||
let dav = require('dav')
|
let dav = require('dav')
|
||||||
let webdav = require('webdav')
|
let webdav = require('webdav')
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
|
const ICAL = require('ical.js');
|
||||||
|
|
||||||
function NextcloudConfigNode(n) {
|
function NextcloudConfigNode(n) {
|
||||||
RED.nodes.createNode(this, n)
|
RED.nodes.createNode(this, n)
|
||||||
@ -46,13 +47,17 @@ module.exports = function(RED) {
|
|||||||
.then(function (calendarEntries) {
|
.then(function (calendarEntries) {
|
||||||
let icsList = { 'payload': { 'name': calendar.displayName, 'data': [] } }
|
let icsList = { 'payload': { 'name': calendar.displayName, 'data': [] } }
|
||||||
calendarEntries.forEach(function (calendarEntry) {
|
calendarEntries.forEach(function (calendarEntry) {
|
||||||
const keyValue = calendarEntry.calendarData.split('\n')
|
node.warn(calendarEntry.calendarData);
|
||||||
let icsJson = {}
|
node.warn(JSON.stringify(calendarEntry.calendarData.split('\n')));
|
||||||
for (let x = 0; x < keyValue.length; x++) {
|
try {
|
||||||
const temp = keyValue[x].split(':')
|
let jCalData = ICAL.parse(calendarEntry.calendarData);
|
||||||
icsJson[temp[0]] = temp[1]
|
let component = new ICAL.Component(jCalData);
|
||||||
|
let vevent = component.getFirstSubcomponent('vevent');
|
||||||
|
var event = new ICAL.Event(vevent);
|
||||||
|
icsList.payload.data.push(event);
|
||||||
|
} catch (error) {
|
||||||
|
node.error("Error parsing calendar data: " + error);
|
||||||
}
|
}
|
||||||
icsList.payload.data.push(icsJson)
|
|
||||||
})
|
})
|
||||||
node.send(icsList)
|
node.send(icsList)
|
||||||
}, function () {
|
}, function () {
|
||||||
|
|||||||
Reference in New Issue
Block a user