aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorNoah Loomans <noahloomans@gmail.com>2018-02-17 18:33:55 +0100
committerNoah Loomans <noahloomans@gmail.com>2018-02-17 18:33:55 +0100
commitf4ed51066f16df24db44c11aa0b2356299d07010 (patch)
treecfe9edc84b3fe781d0f0cfadd6f6c7c29d3168f0 /src/server
parent2e4b9dc1cc48e5d35243bcef32b8acd29171bf23 (diff)
Migrate from request to axios
Diffstat (limited to 'src/server')
-rw-r--r--src/server/lib/schools/hetmml/axios.js11
-rw-r--r--src/server/lib/schools/hetmml/getScheduleData.js20
-rw-r--r--src/server/lib/schools/hetmml/getURLOfUser.js3
-rw-r--r--src/server/routes/getSchedule.js18
-rw-r--r--src/server/routes/index.js7
5 files changed, 31 insertions, 28 deletions
diff --git a/src/server/lib/schools/hetmml/axios.js b/src/server/lib/schools/hetmml/axios.js
new file mode 100644
index 0000000..3993890
--- /dev/null
+++ b/src/server/lib/schools/hetmml/axios.js
@@ -0,0 +1,11 @@
+const axios = require('axios');
+const iconv = require('iconv-lite');
+
+const instance = axios.create({
+ baseURL: 'http://www.meetingpointmco.nl/Roosters-AL/doc/',
+ timeout: 5000,
+ responseType: 'arraybuffer',
+ transformResponse: [responseBody => iconv.decode(responseBody, 'iso-8859-1')],
+});
+
+module.exports = instance;
diff --git a/src/server/lib/schools/hetmml/getScheduleData.js b/src/server/lib/schools/hetmml/getScheduleData.js
index 303af6d..6789479 100644
--- a/src/server/lib/schools/hetmml/getScheduleData.js
+++ b/src/server/lib/schools/hetmml/getScheduleData.js
@@ -1,11 +1,9 @@
-const Promise = require('bluebird');
const cheerio = require('cheerio');
-const iconv = require('iconv-lite');
const debounce = require('promise-debounce');
const _ = require('lodash');
-const request = Promise.promisify(require('request'));
const getUrlOfUser = require('./getURLOfUser');
+const axios = require('./axios');
let meetingpointData;
let lastUpdate;
@@ -66,13 +64,11 @@ function combineUsers(usersArrays) {
function getAlts(users) {
const requests = users.map(user =>
- request(getUrlOfUser('dag', user.type, user.index, 7), { timeout: 8000, encoding: null }));
+ axios.get(getUrlOfUser('dag', user.type, user.index, 7)));
return Promise.all(requests).then(teacherResponses =>
teacherResponses.map((teacherResponse, index) => {
- const teacherResponseBody = iconv.decode(teacherResponse.body, 'iso-8859-1');
-
- const teacherName = scrapeAltText(teacherResponseBody);
+ const teacherName = scrapeAltText(teacherResponse.data);
return {
...users[index],
@@ -83,15 +79,15 @@ function getAlts(users) {
function getScheduleData() {
const navbarRequests = [
- request('http://www.meetingpointmco.nl/Roosters-AL/doc/dagroosters/frames/navbar.htm', { timeout: 5000 }),
- request('http://www.meetingpointmco.nl/Roosters-AL/doc/basisroosters/frames/navbar.htm', { timeout: 5000 }),
+ axios.get('/dagroosters/frames/navbar.htm'),
+ axios.get('/basisroosters/frames/navbar.htm'),
];
return Promise.all(navbarRequests)
.then(([dailyScheduleResponse, basisScheduleResponse]) => {
- const users = scrapeUsers(dailyScheduleResponse.body);
- const dailyScheduleWeeks = scrapeWeeks(dailyScheduleResponse.body);
- const basisScheduleWeeks = scrapeWeeks(basisScheduleResponse.body);
+ const users = scrapeUsers(dailyScheduleResponse.data);
+ const dailyScheduleWeeks = scrapeWeeks(dailyScheduleResponse.data);
+ const basisScheduleWeeks = scrapeWeeks(basisScheduleResponse.data);
const teachers = users.filter(user => user.type === 't');
diff --git a/src/server/lib/schools/hetmml/getURLOfUser.js b/src/server/lib/schools/hetmml/getURLOfUser.js
index f44d1a3..2e1e1e9 100644
--- a/src/server/lib/schools/hetmml/getURLOfUser.js
+++ b/src/server/lib/schools/hetmml/getURLOfUser.js
@@ -1,8 +1,7 @@
const leftPad = require('left-pad'); // I imported this just to piss you off ;)
function getURLOfUser(scheduleType, type, index, week) {
- return `http://www.meetingpointmco.nl/Roosters-AL/doc/${scheduleType}roosters/` +
- `${leftPad(week, 2, '0')}/${type}/${type}${leftPad(index + 1, 5, '0')}.htm`;
+ return `/${scheduleType}roosters/${leftPad(week, 2, '0')}/${type}/${type}${leftPad(index + 1, 5, '0')}.htm`;
}
module.exports = getURLOfUser;
diff --git a/src/server/routes/getSchedule.js b/src/server/routes/getSchedule.js
index 1734cd8..b98e76a 100644
--- a/src/server/routes/getSchedule.js
+++ b/src/server/routes/getSchedule.js
@@ -1,11 +1,10 @@
const express = require('express');
const router = express.Router();
-const request = require('request');
-const iconv = require('iconv-lite');
const getScheduleData = require('../lib/schools/hetmml/getScheduleData');
const getURLOfUser = require('../lib/schools/hetmml/getURLOfUser');
+const axios = require('../lib/schools/hetmml/axios');
// 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
@@ -45,16 +44,13 @@ router.get('/:type/:value', (req, res, next) => {
const url = getURLOfUser(scheduleType, type, index, week);
- request(url, { encoding: null }, (err, data) => {
- if (err) {
+ axios.get(url)
+ .then((response) => {
+ res.status(response.status).end(response.data);
+ })
+ .catch((err) => {
next(err);
- return;
- }
-
- const utf8Body = iconv.decode(data.body, 'ISO-8859-1');
-
- res.status(data.statusCode).end(utf8Body);
- });
+ });
});
});
diff --git a/src/server/routes/index.js b/src/server/routes/index.js
index af82e1f..78f31f3 100644
--- a/src/server/routes/index.js
+++ b/src/server/routes/index.js
@@ -27,10 +27,11 @@ router.get(['/', '/s/*', '/t/*', '/r/*', '/c/*'], (req, res) => {
dailyScheduleWeeksStr,
basisScheduleWeeksStr,
});
- }).catch(() => {
- console.error('Unable to get user info, emergency redirect!');
- res.render('redirect');
});
+ // .catch(() => {
+ // console.error('Unable to get user info, emergency redirect!');
+ // res.render('redirect');
+ // });
});
module.exports = router;