diff options
Diffstat (limited to 'src/index.ts')
| -rw-r--r-- | src/index.ts | 76 |
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(); +}); |
