This repository has been archived by the owner on Dec 25, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
53 lines (42 loc) · 1.73 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
53
const express = require('express');
const bodyParser = require('body-parser');
const Slack = require('slack');
const app = express();
const slack = new Slack();
const BuildMessage = require('./buildMessage');
const UNIPA = require('./unipa');
const Interpret = require('./interpret');
const Parse = require('./parse');
const Util = require('./util');
const path = require('path');
require('dotenv').config({path: path.resolve(__dirname, '.env')});
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
const listener = app.listen(process.env.APP_PORT, () => {
console.log(`Server is listening on ${listener.address().port}`);
});
app.post("/", searchEmptyRoom);
async function searchEmptyRoom(req, res) {
const inputParseRes = Parse.parseInputTime(req.body.text);
if (!inputParseRes.success) {
res.json(BuildMessage.errorMsg(inputParseRes.message));
return;
} else {
res.json(BuildMessage.classRoomReserveStatusArgConfirm(inputParseRes.timeRange));
}
await UNIPA.dlClassRoomReserveStatus({
building: inputParseRes.building,
startDateDt: inputParseRes.timeRange.s,
endDateDt: inputParseRes.timeRange.e
});
await Util.waitDownloadComplete(UNIPA.getDownloadPath());
const interpretRes = await Interpret(UNIPA.getDownloadPath()).run(inputParseRes.timeRange);
await UNIPA.tierDown();
console.log(BuildMessage.classRoomReserveStatus(interpretRes.overlapReserved, interpretRes.emptyClasses));
slack.chat.postMessage({
token: process.env.BOT_TOKEN, // ※Bot token
channel: req.body.channel_id,
text: BuildMessage.classRoomReserveStatus(interpretRes.overlapReserved, interpretRes.emptyClasses),
}).then(console.log).catch(console.error);
}
module.exports = {searchEmptyRoom}