diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/getMeetingpointData.js | 83 | ||||
-rw-r--r-- | lib/getURLOfUsers.js | 45 |
2 files changed, 0 insertions, 128 deletions
diff --git a/lib/getMeetingpointData.js b/lib/getMeetingpointData.js deleted file mode 100644 index 94cf36c..0000000 --- a/lib/getMeetingpointData.js +++ /dev/null @@ -1,83 +0,0 @@ -'use strict' - -const Promise = require('bluebird') -const cheerio = require('cheerio') -const _ = require('lodash') -const request = Promise.promisify(require('request')) - -let meetingpointData -let lastUpdate - -function getUsers (page) { - const script = page('script').eq(1).text() - - const regexs = [/var classes = \[(.+)\];/, /var teachers = \[(.+)\];/, /var rooms = \[(.+)\];/, /var students = \[(.+)\];/] - const items = regexs.map(function (regex) { - return script.match(regex)[1].split(',').map(function (item) { - return item.replace(/"/g, '') - }) - }) - - return [] - .concat(items[0].map(function (item, index) { - return { - type: 'c', - value: item, - index: index - } - })) - .concat(items[1].map(function (item, index) { - return { - type: 't', - value: item, - index: index - } - })) - .concat(items[2].map(function (item, index) { - return { - type: 'r', - value: item, - index: index - } - })) - .concat(items[3].map(function (item, index) { - return { - type: 's', - value: item, - index: index - } - })) -} - -function getValidWeekNumbers(page) { - const weekSelector = page('select[name="week"]'); - const weekNumbers = _.map(weekSelector.children(), option => parseInt(option.attribs.value)) - - return weekNumbers; -} - -function requestData() { - lastUpdate = new Date() - - return request(`http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/frames/navbar.htm`, { timeout: 5000 }).then((response) => { - const page = cheerio.load(response.body) - const users = getUsers(page) - const validWeekNumbers = getValidWeekNumbers(page) - - meetingpointData = { users, validWeekNumbers } - - return meetingpointData - }) -} - -function getMeetingpointData () { - if (lastUpdate == null || new Date() - lastUpdate > 10 * 60 * 1000) { // 10 minutes - return requestData() - } else if (!meetingpointData) { - return Promise.reject() - } else { - return Promise.resolve(meetingpointData) - } -} - -module.exports = getMeetingpointData diff --git a/lib/getURLOfUsers.js b/lib/getURLOfUsers.js deleted file mode 100644 index 8590ee4..0000000 --- a/lib/getURLOfUsers.js +++ /dev/null @@ -1,45 +0,0 @@ -const leftPad = require('left-pad') - -// copied from http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/untisscripts.js, -// were using the same code as they do to be sure that we always get the same -// week number. -function getWeek () { - // Create a copy of this date object - var target = new Date() - - // ISO week date weeks start on monday - // so correct the day number - var dayNr = (target.getDay() + 6) % 7 - - // ISO 8601 states that week 1 is the week - // with the first thursday of that year. - // Set the target date to the thursday in the target week - target.setDate(target.getDate() - dayNr + 3) - - // Store the millisecond value of the target date - var firstThursday = target.valueOf() - - // Set the target to the first thursday of the year - // First set the target to january first - target.setMonth(0, 1) - // Not a thursday? Correct the date to the next thursday - if (target.getDay() !== 4) { - target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7) - } - - // The weeknumber is the number of weeks between the - // first thursday of the year and the thursday in the target week - return 1 + Math.ceil((firstThursday - target) / 604800000) // 604800000 = 7 * 24 * 3600 * 1000 -} - -function getURLOfUsers (weekOffset, type, id) { - return `http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/` + - `${getWeek() + weekOffset}/${type}/${type}${leftPad(id, 5, '0')}.htm` -} - -module.exports = getURLOfUsers - -module.exports.CLASS = 'c' -module.exports.TEACHERS = 't' -module.exports.ROOMS = 'r' -module.exports.STUDENTS = 's' |