version 2.0 | refactor
changed structure of codebase. also include docker files for easy deployment
This commit is contained in:
93
server.js
Normal file
93
server.js
Normal file
@@ -0,0 +1,93 @@
|
||||
const express = require('express')
|
||||
const path = require('path');
|
||||
const app = express()
|
||||
const gtfsRealtime = require("./tools/gtfsData")
|
||||
app.use(express.static('public'))
|
||||
app.use((req, res, next) => {
|
||||
res.header('Access-Control-Allow-Origin', '*'); // or 'http://127.0.0.1:1001' for security
|
||||
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');
|
||||
next();
|
||||
});
|
||||
const port = 1001
|
||||
|
||||
app.get('/', (req, res) => {
|
||||
res.sendFile(path.join(__dirname, 'public', 'index.html'));
|
||||
})
|
||||
|
||||
app.get('/api/', (req, res) => {
|
||||
res.json({ version: "0.0.1", status: "healthy" })
|
||||
})
|
||||
|
||||
app.get('/api/train/', async (req, res) => {
|
||||
res.json(await gtfsRealtime.getTrains())
|
||||
})
|
||||
|
||||
app.get('/api/train/:routeId', async (req, res) => {
|
||||
const routeId = req.params.routeId;
|
||||
res.json(await gtfsRealtime.getTrainsByRoute(routeId))
|
||||
})
|
||||
|
||||
app.get('/api/bus/', async (req, res) => {
|
||||
res.json(await gtfsRealtime.getBuses())
|
||||
})
|
||||
|
||||
app.get('/api/bus/:routeId', async (req, res) => {
|
||||
const routeId = req.params.routeId;
|
||||
res.json(await gtfsRealtime.getBusesByRoute(routeId))
|
||||
})
|
||||
|
||||
app.get('/api/alert', async (req, res) => {
|
||||
res.json(await gtfsRealtime.getAlerts())
|
||||
})
|
||||
|
||||
app.get('/api/alert/:routeId', async (req, res) => {
|
||||
const routeId = req.params.routeId;
|
||||
res.json(await gtfsRealtime.getAlertsByRoute(routeId))
|
||||
})
|
||||
|
||||
app.get('/api/schedule', async (req, res) => {
|
||||
const { route, station } = req.query;
|
||||
try {
|
||||
let result;
|
||||
if (route) {
|
||||
result = await gtfsRealtime.getScheduleByRoute(route);
|
||||
} else if (station) {
|
||||
result = await gtfsRealtime.getScheduleByStationId(station);
|
||||
} else {
|
||||
return res.status(400).json({ error: "Please provide route, or station query parameter" });
|
||||
}
|
||||
|
||||
if (!result || (Array.isArray(result) && result.length === 0)) {
|
||||
return res.status(404).json({ error: "No schedule found" });
|
||||
}
|
||||
|
||||
res.json(result);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
|
||||
res.status(500).json({ error: "Internal server error" });
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/api/routes', async (req, res) => {
|
||||
res.json(await gtfsRealtime.getRoutes())
|
||||
})
|
||||
|
||||
app.get('/api/shape/:routeId', async (req, res) => {
|
||||
const routeId = req.params.routeId;
|
||||
res.json(await gtfsRealtime.getShapeByRoute(routeId))
|
||||
})
|
||||
|
||||
app.get('/api/stop', async (req, res) => {
|
||||
res.json(await gtfsRealtime.getStops())
|
||||
})
|
||||
|
||||
app.get('/api/stop/:routeId', async (req, res) => {
|
||||
const routeId = req.params.routeId;
|
||||
res.json(await gtfsRealtime.getStopsByRoute(routeId))
|
||||
})
|
||||
|
||||
|
||||
app.listen(port, () => {
|
||||
console.log(`Example app listening on port ${port}`)
|
||||
})
|
||||
Reference in New Issue
Block a user