From d895b2bbe19e502393e474b93597db7c093c03f6 Mon Sep 17 00:00:00 2001 From: schneefux Date: Sun, 29 Apr 2018 12:39:40 +0200 Subject: Add ICS support --- ICal.ts | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 ICal.ts (limited to 'ICal.ts') diff --git a/ICal.ts b/ICal.ts new file mode 100644 index 0000000..fe74dab --- /dev/null +++ b/ICal.ts @@ -0,0 +1,30 @@ +// ref. https://www.npmjs.com/package/ical-generator +import * as ical from 'ical-generator'; +import * as crypto from 'crypto'; +import * as fs from 'fs'; + +const TARGET_FILE = 'docs/informatik1.ics'; +const DOMAIN = 'schneefux.github.io'; // TODO config management + +const sha256 = (x) => crypto.createHash('sha256').update(x, 'utf8').digest('hex'); + +const cal = ical(); + +// TODO declare an interface +export function createEvent(event) { + // TODO better duplicate detection and resolve conflicts lol + const eventId = sha256(JSON.stringify(event)).substr(0, 16); + + const icalEvent = cal.createEvent({ + uid: eventId, + start: event.start.dateTime, + end: event.end.dateTime, + timestamp: new Date(), + summary: event.summary, + description: event.description, + }); +} + +export function commit() { + fs.writeFile(TARGET_FILE, cal.toString(), (err) => {}); +} -- cgit v1.3.1