node-oc-transpo
Version:
A Node.js library for the OC Transpo API
75 lines (60 loc) • 2 kB
JavaScript
const request = require('request');
const consts = require('./consts');
const version = consts.version;
const baseUrl = consts.baseUrl;
const endUrls = consts.endUrls;
const errors = consts.errors;
class OCTranspo {
constructor(secret) {
this.appID = secret.appID;
this.appKey = secret.appKey;
}
baseRequest(endUrl, options, callback) {
request.post({
url: `https://${baseUrl}/${version}/${endUrl}`,
form: Object.assign({
appID: this.appID,
apiKey: this.appKey,
format: "json"
}, options)
}, (err, res, body) => {
if (err) {
callback("Unable to connect to OC Transpo API.");
} else {
var json = JSON.parse(body);
var errorCode = json[Object.keys(json)[0]]['Error'];
if (errorCode) {
callback(JSON.stringify({
code: errorCode,
message: errors[errorCode]
}));
} else {
callback(undefined, json);
}
}
});
}
getRouteSummaryForStop(stopNo, callback) {
this.baseRequest(endUrls.getRouteSummaryForStop, {stopNo: stopNo}, (err, res) => {
callback(err, res);
});
}
getNextTripsForStop(stopNo, routeNo, callback) {
this.baseRequest(endUrls.getNextTripsForStop, {stopNo: stopNo, routeNo:routeNo}, (err, res) => {
callback(err, res);
});
}
getNextTripsForStopAllRoutes(stopNo, callback) {
this.baseRequest(endUrls.getNextTripsForStopAllRoutes, {stopNo: stopNo}, (err, res) => {
callback(err, res);
});
}
gtfs(table, options) {
this.baseRequest(endUrls.gtfs, Object.assign({table: table}, options), (err, res) => {
callback(err, res);
});
}
}
module.exports = {
OCTranspo
}