-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathapp.js
33 lines (29 loc) · 882 Bytes
/
app.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
const fs = require('fs');
const Koa = require('koa');
const cors = require('@koa/cors');
const moment = require('moment');
const config = require('./config.json');
Promise.all(config.enabled_oj.map(file => {
const { contests, ...oj } = require(`./${file}`);
return contests.then(contests => {
console.log(`Loaded: ${oj.name}, ${contests.length} contests`);
return { id: file, ...oj, contests };
});
})).then(oj_list => {
const app = new Koa;
app.use(cors());
const lastUpdateTime = moment();
app.use(async (ctx) => {
ctx.body = {
'status': 'OK',
'lastUpdateTime': lastUpdateTime,
'oj': oj_list
};
});
app.listen(config.port, () => {
console.log(`Server listening on port ${config.port}...`);
});
}).catch(err => {
console.error(err);
process.exit(1);
});