-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroutes.js
53 lines (44 loc) · 1.36 KB
/
routes.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 api = require("./lib/api");
const router = express.Router();
router.get("/healthcheck", (req, res) => res.send("OK"));
router.get("/:slug", async (req, res, next) => {
const { slug } = req.params;
let diploma;
try {
diploma = await api.fetchDiploma({ slug });
} catch (e) {
return await next(e);
}
if (!diploma) {
return await next();
}
const languages = {};
languages[diploma.language.toLowerCase()] = { slug: diploma.slug };
diploma.other_languages.forEach((diplomaInOtherLanguage) => {
languages[diplomaInOtherLanguage.language.toLowerCase()] = {
slug: diplomaInOtherLanguage.slug,
};
});
const course = {
name: diploma.course.name.split("(")[0].trim(),
name_en: diploma.course.name_international.split("(")[0].trim(),
};
const title = {
ru: `${diploma.student.first_name} ${diploma.student.last_name} — ${diploma.course.name}`,
en: `${diploma.student.first_name_en} ${diploma.student.last_name_en} — ${diploma.course.name_international}`,
};
res.render("diploma.html", {
diploma,
languages,
course,
title,
});
});
router.get("/:slug/:language", async (req, res) => {
// legacy route
const { slug, language } = req.params;
const diploma = await api.fetchDiploma({ slug });
res.redirect(`/${diploma.slug}`);
});
module.exports = router;