UNPKG

node-oc-transpo

Version:

A Node.js library for the OC Transpo API

75 lines (60 loc) 2 kB
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 }