-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
52 lines (39 loc) · 1.3 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
'use strict';
const fs = require('fs');
const express = require('express');
const bodyParser = require('body-parser');
const logger = require('morgan');
const request = require('request');
const schedule = require('node-schedule');
const unzip = require('unzip');
require('dotenv').config();
const PORT = process.env.PORT || 8080;
const GTFS_URL = 'http://www.octranspo1.com/files/google_transit.zip';
const GTFS_ZIP = 'db/google_transit.zip';
const GTFS_PATH = 'db/google_transit/';
const app = express();
app.use(bodyParser.json());
app.use(logger('dev'));
// Downloads the GTFS at 4AM every day
let downloadGTFS = schedule.scheduleJob('0 4 * * *', function(){
request(GTFS_URL)
.pipe(fs.createWriteStream(GTFS_ZIP))
.on('close', function () {
console.log(`File written at ${new Date()}`);
fs.createReadStream(GTFS_ZIP).pipe(unzip.Extract({ path: GTFS_PATH}));
fs.unlink(GTFS_ZIP, (err) => {
if (err) throw err;
console.log(`${GTFS_ZIP} was deleted`);
});
});
});
app.get('/ping', (req, res) => {
res.json({
message: 'pong'
});
});
app.use('/routes', require('./src/routes/routes-routes'));
app.use('/stops', require('./src/routes/stops-routes'));
app.listen(PORT);
console.log(`Listening on Port ${PORT}`);
module.exports = app;