summaryrefslogtreecommitdiff
path: root/src/index.ts
diff options
context:
space:
mode:
authorTim Schiewe <git@tforge.de>2018-04-30 19:18:46 +0200
committerTim Schiewe <git@tforge.de>2018-04-30 19:18:46 +0200
commitac85779f3b67ffc2953c17d0824be62b1f0acc86 (patch)
tree5442df8297c3620ed72af7e3ece2a77ad58cce35 /src/index.ts
parent93b466df50d94d4c15715f5eb4d88a0be7d61c11 (diff)
downloadsplus-ac85779f3b67ffc2953c17d0824be62b1f0acc86.tar.gz
splus-ac85779f3b67ffc2953c17d0824be62b1f0acc86.zip
Implement interface/config based infrastructure
Fixes #2
Diffstat (limited to 'src/index.ts')
-rw-r--r--src/index.ts76
1 files changed, 26 insertions, 50 deletions
diff --git a/src/index.ts b/src/index.ts
index 4791fb2..95d3797 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,41 +1,26 @@
-import {readFile} from 'fs';
-import {SplusParser} from './SplusParser';
-let createEvent = (arg) => {};
-let commit = () => {};
-if (process.argv.includes('ics')) {
- createEvent = require('./ICal').createEvent;
- commit = require('./ICal').commit;
-} else {
- createEvent = require('./GoogleCalendar').createEvent;
-}
+import {SplusParser} from './core/SplusParser';
+import {config} from './config';
+import {IEvent} from './core/IEvent';
-const splusUrl = 'http://splus.ostfalia.de/semesterplan123.php?id=1362F014835FFFD0F67159E302EC1A3C&identifier=%23SPLUS7A3292';
+function getMonday(date: Date) {
+ const day = date.getDay() || 7;
+ if (day !== 1) {
+ date.setHours(-24 * (day - 1));
+ }
-/*
-get(splusUrl, (res) => {
- let data = '';
- res.on('data', chunk => data += chunk);
- res.on('end', () => TODO);
-});
-*/
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate());
+}
-const baseDate = new Date(2018, 3, 23);
+const baseDate = getMonday(new Date());
-readFile('etc/sample.htm', (err, data) => {
- const lectures = new SplusParser(data.toString()).getLectures(lecture => {
- // Filter some lectures out
- if (lecture.title === '') return false;
- if (lecture.title.indexOf('Mathe-Cafe') !== -1) return false;
- if (lecture.title.indexOf('Mathe-Repetitorium') !== -1) return false;
- if (lecture.title.indexOf('Informatik-Lounge') !== -1) return false;
- if (lecture.title.indexOf('Reservierung') !== -1) return false;
- return lecture.title.indexOf('Kompetenzen') === -1;
- });
+config.source.getData().then(async data => {
+ const lectures = new SplusParser(data.toString()).getLectures(config.lectureFilter);
- lectures.forEach((lec, index) => {
- let beginDate = new Date(baseDate);
+ for (let i = 0; i < lectures.length; i++) {
+ const lec = lectures[i];
+ let beginDate = new Date(baseDate);
beginDate.setDate(beginDate.getDate() + lec.day);
beginDate.setMinutes(beginDate.getMinutes() + lec.begin * 60);
@@ -43,27 +28,18 @@ readFile('etc/sample.htm', (err, data) => {
endDate.setDate(endDate.getDate() + lec.day);
endDate.setMinutes(endDate.getMinutes() + lec.end * 60);
- console.log(lec.title, beginDate.toISOString(), endDate.toISOString());
-
- createEvent({
+ const event: IEvent = {
summary: lec.title,
description: lec.lecturer + (lec.info !== '' ? ' - ' : '') + lec.info,
location: lec.room,
- start: {
- dateTime: beginDate.toISOString()
- },
- end: {
- dateTime: endDate.toISOString()
- },
- reminders: {
- useDefault: false
- }
- });
+ start: beginDate,
+ end: endDate
+ };
- // TODO
- if (index == lectures.length - 1) {
- commit();
- }
- })
-});
+ await config.sink.createEvent(event);
+ console.log(lec.title, beginDate.toISOString(), endDate.toISOString());
+ }
+
+ await config.sink.commit();
+});