-
Notifications
You must be signed in to change notification settings - Fork 9
/
router.js
71 lines (58 loc) · 1.94 KB
/
router.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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
const express = require('express');
const PageFinder = require('./page-finder');
const Memento = require('./memento');
const Catalog = require('./catalog');
const Stops = require('./stops');
const Routes = require('./routes');
const Feed = require('./feed');
const utils = require('../utils/utils')
const router = express.Router();
const pageFinder = new PageFinder();
const memento = new Memento();
const catalog = new Catalog();
const stops = new Stops();
const routes = new Routes();
const feed = new Feed();
// Define HTTP routes only after required data has been initialized
pageFinder.init().then(() => {
router.get('/:agency/connections', (req, res) => {
pageFinder.getConnections(req, res);
});
});
memento.init().then(() => {
router.get('/:agency/connections/memento', (req, res) => {
memento.getMemento(req, res);
});
});
feed.init().then(() => {
router.get('/:agency/connections/feed', (req, res) => {
feed.getFeed(req, res);
});
router.get('/:agency/connections/feed/shape', async (req, res) => {
let host = req.headers.host;
let shape = await utils.addSHACLMetadata({
"id": utils.serverConfig['protocol'] + '://' + host + req.originalUrl,
"ldes": utils.serverConfig['protocol'] + '://' + host + req.originalUrl.substring(0, req.originalUrl.indexOf("shape"))
});
res.set({'Content-Type': 'application/ld+json'});
res.status(200).send(shape);
});
});
router.get('/:agency/catalog', (req, res) => {
catalog.getCatalog(req, res);
});
router.get('/:agency/stops', (req, res) => {
stops.getStops(req, res);
});
router.get('/:agency/routes', (req, res) => {
routes.getRoutes(req, res);
});
router.options('/*', (req, res) => {
res.set({
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
'Content-Type': 'application/ld+json'
});
res.sendStatus(200);
});
module.exports = router;