Skip to content

Commit

Permalink
feat: links param.
Browse files Browse the repository at this point in the history
  • Loading branch information
morganney committed Nov 22, 2023
2 parents e05dda8 + 439885c commit b34491a
Show file tree
Hide file tree
Showing 6 changed files with 73 additions and 50 deletions.
10 changes: 8 additions & 2 deletions lib/api/agencies.js
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,10 @@ agencies.list = function(req, res) {
vuri = [hrefself, '/', 'vehicles'].join(''),
ruri = [hrefself, '/', 'routes'].join('');

a._links = getLinks({self: hrefself, route: ruri, vehicle: vuri, agency: uri}, a, req);
if (req.query.links !== 'false') {
a._links = getLinks({self: hrefself, route: ruri, vehicle: vuri, agency: uri}, a, req);
}

json.push(a);
});
res.status(200).json(json);
Expand All @@ -100,7 +103,10 @@ agencies.get = function(req, res) {
ruri = uri + '/routes';
vuri = uri + '/vehicles';
auri = uri.replace('/' + json.id, '');
json._links = getLinks({self: uri, route: ruri, vehicle: vuri, agency: auri}, json, req);

if (req.query.links !== 'false') {
json._links = getLinks({self: uri, route: ruri, vehicle: vuri, agency: auri}, json, req);
}
} else return true; // Keep looping.
});
if(json) res.status(200).json(json);
Expand Down
30 changes: 17 additions & 13 deletions lib/api/predictions.js
Original file line number Diff line number Diff line change
Expand Up @@ -124,8 +124,10 @@ predictions.get = function(req, res) {
});
}

// Build the prediction hypertext links
p._links = { self: selflink, to: [], from: from };
if (req.query.links !== 'false') {
// Build the prediction hypertext links
p._links = { self: selflink, to: [], from: from };
}

json.push(p);
} // else there are no predictions thus json === [empty].
Expand Down Expand Up @@ -299,17 +301,19 @@ predictions.location = function(req, res) {
// Should already be sorted by NextBus, but just in case sort the values.
p.values.sort(function(a, b) {return a.minutes - b.minutes;});

p._links = {
self: {
href: uri,
type: C.MTJSON,
rel: 'self',
rt: C.PRED,
title: ['Transit agency predictions for latitude/longitude: ', latlon].join('')
},
to: [],
from: []
};
if (req.query.links !== 'false') {
p._links = {
self: {
href: uri,
type: C.MTJSON,
rel: 'self',
rt: C.PRED,
title: ['Transit agency predictions for latitude/longitude: ', latlon].join('')
},
to: [],
from: []
};
}

json.push(p);
});
Expand Down
64 changes: 35 additions & 29 deletions lib/api/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,40 +79,43 @@ routes.list = function(req, res) {
title: $.title
};

r._links = {
self: {
href: suri,
type: utils.c.MTJSON,
rel: 'http://restbus.info/_links/rel/full',
rt: C.RTE,
title: ['Full configuration for ', params.agency, ' route ', r.title , '.'].join('')
},
to: [
{
if (req.query.links !== 'false') {
r._links = {
self: {
href: suri,
type: utils.c.MTJSON,
rel: 'http://restbus.info/_links/rel/full',
rt: C.RTE,
title: ['Full configuration for ', params.agency, ' route ', r.title , '.'].join('')
}
],
from: [
{
href: previous,
type: utils.c.MTJSON,
rel: 'via',
rt: C.AGY,
title: ['Transit agency ', params.agency, ' details.'].join('')
},
{
href: uri,
type: utils.c.MTJSON,
rel: 'section',
rt: C.RTE,
title: ['A collection of routes for transit agency ', params.agency, '.'].join('')
}
]
};
to: [
{
href: suri,
type: utils.c.MTJSON,
rel: 'http://restbus.info/_links/rel/full',
rt: C.RTE,
title: ['Full configuration for ', params.agency, ' route ', r.title , '.'].join('')
}
],
from: [
{
href: previous,
type: utils.c.MTJSON,
rel: 'via',
rt: C.AGY,
title: ['Transit agency ', params.agency, ' details.'].join('')
},
{
href: uri,
type: utils.c.MTJSON,
rel: 'section',
rt: C.RTE,
title: ['A collection of routes for transit agency ', params.agency, '.'].join('')
}
]
};
}

json.push(r);
});
}
Expand Down Expand Up @@ -189,7 +192,10 @@ routes.get = function(req, res) {
json.paths.push({ points: points });
});

json._links = getLinks({self: uri, vehicle: vuri, stops: json.stops, route: ruri}, json, req);
if (req.query.links !== 'false') {
json._links = getLinks({self: uri, vehicle: vuri, stops: json.stops, route: ruri}, json, req);
}

res.status(200).json(json);
} else utils.nbXmlError(nberr, res);
} else utils.streamOrParseError(err, js, res);
Expand Down
10 changes: 8 additions & 2 deletions lib/api/vehicles.js
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,11 @@ vehicles.list = function(req, res) {

href = [uri, '/', v.id].join('');
rhref = [ruri, '/', v.routeId, '/vehicles'].join('');
v._links = getLinks({self: href, agency: uri, route: rhref}, v, req);

if (req.query.links !== 'false') {
v._links = getLinks({self: href, agency: uri, route: rhref}, v, req);
}

json.push(v);
});
last_time = parseInt(js.body.lastTime[0].$.time, 10);
Expand Down Expand Up @@ -141,7 +145,9 @@ vehicles.get = function(req, res) {
rstr = ['/routes/', v.routeId, '/vehicles'].join(''),
ruri = auri.replace('/vehicles', rstr);

v._links = getLinks({self: uri, agency: auri, route: ruri}, v, req);
if (req.query.links !== 'false') {
v._links = getLinks({self: uri, agency: auri, route: ruri}, v, req);
}

res.status(200).json(v);
} else utils.nbXmlError(nberr, res);
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "restbus",
"description": "RESTful JSON API for the NextBus Inc. public XML feed.",
"version": "2.1.0",
"version": "2.2.0",
"main": "index",
"dependencies": {
"compression": "1.7.4",
Expand Down Expand Up @@ -35,6 +35,7 @@
},
"license": "MIT",
"scripts": {
"start": "node index.js run"
"start": "node index.js run",
"dev": "node --watch index.js run"
}
}

0 comments on commit b34491a

Please sign in to comment.