UNPKG

@golemio/pid

Version:
56 lines 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.V2PublicDepartureBoardsController = void 0; const Di_1 = require("../../ioc/Di"); const OgModuleToken_1 = require("../../ioc/OgModuleToken"); const trace_provider_1 = require("@golemio/core/dist/monitoring/opentelemetry/trace-provider"); class V2PublicDepartureBoardsController { constructor() { this.getAll = async (req, res, next) => { const span = (0, trace_provider_1.createChildSpan)("V2PublicDepartureBoardsController.getAll"); try { const facade = Di_1.OgPublicContainer.resolve(OgModuleToken_1.OgModuleToken.DepartureBoardFacade); const params = this.parseDepartureParams(req.query); const result = await facade.getAll(params.stopIds, params.limit, params.routeShortNames, params.minutesAfter); if (result === null) { res.status(404).send([]); return; } res.json(result); } catch (err) { next(err); } finally { span?.end(); } }; } parseDepartureParams(query) { return { stopIds: this.parseStopIds(query.stopIds instanceof Array ? query.stopIds : [query.stopIds]), routeShortNames: query.routeShortNames ? query.routeShortNames instanceof Array ? query.routeShortNames : [query.routeShortNames] : null, limit: query.limit ? parseInt(query.limit) : 5, minutesAfter: query.minutesAfter ? parseInt(query.minutesAfter) : 60, }; } parseStopIds(stopIdsFromInput) { let output = new Set(); for (const stopId of stopIdsFromInput) { const parsed = JSON.parse(stopId); const priority = Object.keys(parsed)[0]; const stopIds = parsed[priority]; output.add({ priority: Number.parseInt(priority), stopIds: [...new Set(stopIds)], }); } return output; } } exports.V2PublicDepartureBoardsController = V2PublicDepartureBoardsController; //# sourceMappingURL=V2PublicDepartureBoardsController.js.map