Files
Timetable-V2/server/index.js
2022-05-05 14:39:41 +02:00

51 lines
1.2 KiB
JavaScript

import express from "express";
import {
getTimetable,
getSubstitutions,
getHistory,
getClasses,
} from "./api/index.js";
import { Auth } from "./api/auth.js";
import { Parser } from "./parser/index.js";
import cors from "cors";
import cookieParser from "cookie-parser";
const app = express();
const port = process.env.PORT || 3000;
app.use(cors());
app.use(cookieParser());
app.use(express.urlencoded({ extended: true }));
const auth = new Auth();
if (!process.env.DSB_USER || !process.env.DSB_PASSWORD) {
console.error("Error: DSB Auth environment variables missing!");
process.exit(1);
}
const parser = new Parser(
process.env.DSB_USER,
process.env.DSB_PASSWORD,
process.env.UPDATE_INTERVAL || 1 * 60 * 1000
);
app.post("/login", auth.login);
app.use("/api", auth.checkLogin);
app.get("/api/check", (_req, res) => {
res.sendStatus(200);
});
app.get("/api/timetable", getTimetable);
app.get("/api/substitutions", getSubstitutions);
app.get("/api/history", getHistory);
app.get("/api/classes", getClasses);
app.get("/api/*", (_req, res) => {
res.sendStatus(400);
});
app.use("/", express.static("../dist"));
app.use("/*", express.static("../dist"));
app.listen(port, () => {
console.log(`Server listening on http://localhost:${port}`);
});