-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathindex.js
More file actions
93 lines (73 loc) · 2.4 KB
/
Copy pathindex.js
File metadata and controls
93 lines (73 loc) · 2.4 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
module.exports = require('./lib/gtfs');
var gtfs = require('./lib/gtfs');
// Express web framework
var express = require('express');
var app = express();
var apiRoutes = express.Router();
// Routes
apiRoutes.all('*', function (req, res, next) {
res.writeHead(200, {'Content-Type': 'text/plain', "Access-Control-Allow-Origin": "*"});
next(); // pass control to the next handler
});
// Get a specific agency
apiRoutes.get('/agency', function(req, res) {
var agency_id = req.query.agency_id;
gtfs.getAgency(agency_id, function(err, agency) {
res.end(JSON.stringify(agency));
});
});
// Routes for an agency
apiRoutes.get('/routes', function(req, res) {
var agency_id = req.query.agency_id;
gtfs.getRoutesByAgency(agency_id, function(err, routes) {
res.end(JSON.stringify(routes));
});
});
// Routes near a point
apiRoutes.get('/routesByDistance', function(req, res) {
var lat = req.query.lat;
var lon = req.query.lon;
var radius = req.query.radius;
gtfs.getRoutesByDistance(lat, lon, radius, function(err, routes) {
res.end(JSON.stringify(routes));
});
});
// Shapes by route
apiRoutes.get('/shapes', function(req, res) {
var agency_key = req.query.agency_key;
var route_id = req.query.route_id;
var direction_id = req.query.direction_id;
gtfs.getShapesByRoute(agency_key, route_id, direction_id, function(err, shapes) {
res.end(JSON.stringify(shapes));
});
});
// Stops by route
apiRoutes.get('/stops', function(req, res) {
var agency_key = req.query.agency_key;
var route_id = req.query.route_id;
var direction_id = parseInt(req.query.direction_id);
gtfs.getStopsByRoute(agency_key, route_id, direction_id, function(err, stops) {
res.end(JSON.stringify(stops));
});
});
// Stops near a point
apiRoutes.get('/stopsnear', function(req, res) {
var lat = req.query.lat;
var lon = req.query.lon;
var radius = req.query.radius;
gtfs.getStopsByDistance(lat, lon, radius, function(err, stops) {
res.end(JSON.stringify(stops));
});
});
// Routes that serve a specific stop
apiRoutes.get('/routesbystop', function(req, res) {
var agency_id = req.query.agency_id;
var stop_id = req.query.stop_id;
gtfs.getRoutesByStop(agency_id, stop_id, function(err, routes) {
res.end(JSON.stringify(routes));
});
});
app.use('/api', apiRoutes);
var port = Number(process.env.PORT || 8000);
app.listen(port);
console.log('Server running at http://127.0.0.1:8000/');