diff --git a/src/services/ldb.services.js b/src/services/ldb.services.js index 074067a..d86aa6f 100644 --- a/src/services/ldb.services.js +++ b/src/services/ldb.services.js @@ -7,10 +7,10 @@ // convertTiploc(TIPLOC) : Exported: Looks up CRS, Name & STANOX for Tiploc -const log = require('../utils/log.utils'); // Log Helper +const log = require('../utils/log.utils'); // Log Helper const ldb = require('ldbs-json') const util = require('../utils/ldb.utils') -const san = require('../utils/sanitizer.utils') +const san = require('../utils/sanitizer.utils') const ldbKey = process.env.OWL_LDB_KEY const ldbsvKey = process.env.OWL_LDB_SVKEY @@ -22,13 +22,32 @@ async function get(body, id){ var crs = obj[0]['3ALPHA']; log.out(`ldbService.get: Determined CRS for lookup to be: ${crs}`); var data = await arrDepBoard(crs); + } catch (err) { + log.out(`ldbService.get: Error, Unable to find CRS: ${err}`) + var data = {ERROR:'NOT_FOUND',description:'The entered station was not found. Please check and try again.'}; + } + try { if (data.GetStationBoardResult.nrccMessages) { var msg = await util.cleanMessages(data.GetStationBoardResult.nrccMessages); data.GetStationBoardResult.nrccMessages.message = msg; } + if (data.GetStationBoardResult.trainServices && !Array.isArray(data.GetStationBoardResult.trainServices.service)) { + log.out(`ldbService.get: Transforming trainServices`) + var services = await util.cleanServices(data.GetStationBoardResult.trainServices.service) + data.GetStationBoardResult.trainServices.service = services; + } + if (data.GetStationBoardResult.ferryServices && !Array.isArray(data.GetStationBoardResult.ferryServices.service)) { + log.out(`ldbService.get: Transforming ferryServices`) + var services = await util.cleanServices(data.GetStationBoardResult.ferryServices.service) + data.GetStationBoardResult.ferryServices.service = services; + } + if (data.GetStationBoardResult.busServices && !Array.isArray(data.GetStationBoardResult.busServices.service)) { + log.out(`ldbService.get: Transforming busServices`) + var services = await util.cleanServices(data.GetStationBoardResult.busServices.service) + data.GetStationBoardResult.busServices.service = services; + } } catch (err) { - log.out(`ldbService.get: Error, Unable to find CRS: ${err}`) - var data = {ERROR:'NOT_FOUND',description:'The entered station was not found. Please check and try again.'}; + log.out(`ldbService.get: Error transforming upstream data: ${err}`) } return data; } diff --git a/src/utils/ldb.utils.js b/src/utils/ldb.utils.js index 2ae405b..846f30d 100644 --- a/src/utils/ldb.utils.js +++ b/src/utils/ldb.utils.js @@ -23,7 +23,21 @@ async function cleanMessages(input){ return out; } +// Accepts an object but not an Array and returns it wrapped in an array. +async function cleanServices(input){ + var out = [] + if (!Array.isArray(input)) { + log.out(`ldbUtils.cleanServices: Transforming input: ${input}`) + out.push(input) + log.out(`ldbUtils.cleanServices: Returning output: ${out}`) + return out; + } else { + return input; + } +} + module.exports = { checkCrs, - cleanMessages + cleanMessages, + cleanServices } \ No newline at end of file