@golemio/pid 6.3.0 → 6.3.1-dev.3031287563
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/integration-engine/jis/transformations/JISEventsGtfsRtTransformation.d.ts +1 -0
- package/dist/integration-engine/jis/transformations/JISEventsGtfsRtTransformation.js +9 -0
- package/dist/integration-engine/jis/transformations/JISEventsGtfsRtTransformation.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/TramMessageFilter.d.ts +2 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/TramMessageFilter.js +16 -0
- package/dist/integration-engine/vehicle-positions/workers/runs/helpers/TramMessageFilter.js.map +1 -1
- package/dist/output-gateway/index.js +2 -1
- package/dist/output-gateway/index.js.map +1 -1
- package/dist/output-gateway/public/controllers/helpers/DepartureBoardsParamsParser.d.ts +6 -0
- package/dist/output-gateway/public/controllers/helpers/DepartureBoardsParamsParser.js +29 -0
- package/dist/output-gateway/public/controllers/helpers/DepartureBoardsParamsParser.js.map +1 -0
- package/dist/output-gateway/public/controllers/v2/V2PublicDepartureBoardsController.d.ts +0 -2
- package/dist/output-gateway/public/controllers/v2/V2PublicDepartureBoardsController.js +3 -28
- package/dist/output-gateway/public/controllers/v2/V2PublicDepartureBoardsController.js.map +1 -1
- package/dist/output-gateway/public/controllers/v3/V3PublicDepartureBoardsController.d.ts +7 -0
- package/dist/output-gateway/public/controllers/v3/V3PublicDepartureBoardsController.js +58 -0
- package/dist/output-gateway/public/controllers/v3/V3PublicDepartureBoardsController.js.map +1 -0
- package/dist/output-gateway/public/domain/PublicApiDepartureInterfaces.d.ts +14 -1
- package/dist/output-gateway/public/ioc/Di.js +2 -0
- package/dist/output-gateway/public/ioc/Di.js.map +1 -1
- package/dist/output-gateway/public/ioc/OgModuleToken.d.ts +1 -0
- package/dist/output-gateway/public/ioc/OgModuleToken.js +1 -0
- package/dist/output-gateway/public/ioc/OgModuleToken.js.map +1 -1
- package/dist/output-gateway/public/routers/index.d.ts +1 -0
- package/dist/output-gateway/public/routers/index.js +1 -0
- package/dist/output-gateway/public/routers/index.js.map +1 -1
- package/dist/output-gateway/public/routers/v3/V3PublicDeparturesRouter.d.ts +12 -0
- package/dist/output-gateway/public/routers/v3/V3PublicDeparturesRouter.js +37 -0
- package/dist/output-gateway/public/routers/v3/V3PublicDeparturesRouter.js.map +1 -0
- package/dist/output-gateway/public/service/facade/DepartureBoardFacade.d.ts +2 -2
- package/dist/output-gateway/public/service/facade/DepartureBoardFacade.js +6 -10
- package/dist/output-gateway/public/service/facade/DepartureBoardFacade.js.map +1 -1
- package/docs/jis/index.md +2 -2
- package/docs/openapi-output.yaml +210 -52
- package/package.json +2 -2
|
@@ -10,6 +10,7 @@ type TransformOut = IGtfsRtAlert;
|
|
|
10
10
|
export declare class JISEventsGtfsRtTransformation extends AbstractTransformation<TransformIn, TransformOut> {
|
|
11
11
|
name: string;
|
|
12
12
|
private static PID_WEB_EVENTS_URL;
|
|
13
|
+
private static readonly SEVERITY_LEVEL_MAPPING;
|
|
13
14
|
protected transformInternal: (data: TransformIn) => TransformOut;
|
|
14
15
|
}
|
|
15
16
|
export {};
|
|
@@ -6,6 +6,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
var JISEventsGtfsRtTransformation_1;
|
|
8
8
|
import { JISEventEffectHelper } from "#helpers/jis/JISEventEffectHelper";
|
|
9
|
+
import { JISEventSeverityLevel } from "#helpers/jis/JISEventSeverityLevelEnum";
|
|
10
|
+
import { GtfsAlertSeverityLevelEnum } from "#ie/vehicle-positions/workers/gtfs-rt/interfaces/AlertsInterfaces";
|
|
9
11
|
import { AbstractTransformation } from "@golemio/core/dist/helpers/transformation/AbstractTransformation.js";
|
|
10
12
|
import { injectable } from "@golemio/core/dist/shared/tsyringe.js";
|
|
11
13
|
let JISEventsGtfsRtTransformation = JISEventsGtfsRtTransformation_1 = class JISEventsGtfsRtTransformation extends AbstractTransformation {
|
|
@@ -32,6 +34,7 @@ let JISEventsGtfsRtTransformation = JISEventsGtfsRtTransformation_1 = class JISE
|
|
|
32
34
|
],
|
|
33
35
|
},
|
|
34
36
|
effect: JISEventEffectHelper.getMainEffect(data.effect),
|
|
37
|
+
severityLevel: JISEventsGtfsRtTransformation_1.SEVERITY_LEVEL_MAPPING[data.severity_level],
|
|
35
38
|
url: {
|
|
36
39
|
translation: [
|
|
37
40
|
...(data.url.cs !== "nevyplněno"
|
|
@@ -64,6 +67,12 @@ let JISEventsGtfsRtTransformation = JISEventsGtfsRtTransformation_1 = class JISE
|
|
|
64
67
|
}
|
|
65
68
|
};
|
|
66
69
|
JISEventsGtfsRtTransformation.PID_WEB_EVENTS_URL = "https://pid.cz/mimoradnost/?uuid=";
|
|
70
|
+
// Record (not a cast) so that a new JIS severity level fails compilation instead of leaking into the feed
|
|
71
|
+
JISEventsGtfsRtTransformation.SEVERITY_LEVEL_MAPPING = {
|
|
72
|
+
[JISEventSeverityLevel.Info]: GtfsAlertSeverityLevelEnum.INFO,
|
|
73
|
+
[JISEventSeverityLevel.Warning]: GtfsAlertSeverityLevelEnum.WARNING,
|
|
74
|
+
[JISEventSeverityLevel.Severe]: GtfsAlertSeverityLevelEnum.SEVERE,
|
|
75
|
+
};
|
|
67
76
|
JISEventsGtfsRtTransformation = JISEventsGtfsRtTransformation_1 = __decorate([
|
|
68
77
|
injectable()
|
|
69
78
|
], JISEventsGtfsRtTransformation);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JISEventsGtfsRtTransformation.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/transformations/JISEventsGtfsRtTransformation.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"JISEventsGtfsRtTransformation.js","sourceRoot":"","sources":["../../../../src/integration-engine/jis/transformations/JISEventsGtfsRtTransformation.ts"],"names":[],"mappings":"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"}
|
package/dist/integration-engine/vehicle-positions/workers/runs/helpers/TramMessageFilter.d.ts
CHANGED
|
@@ -14,10 +14,12 @@ export declare class TramMessageFilter implements ICommonMessageFilter {
|
|
|
14
14
|
* - run number is less than 80
|
|
15
15
|
* - OR registration number is in not-public vehicles whitelist (e.g., mazačka maintenance trams)
|
|
16
16
|
* - timestamp is in acceptable range
|
|
17
|
+
* - scheduled timestamp 'tjr' is not more than 120 minutes ahead of 'tm' (negative delay over 120 minutes)
|
|
17
18
|
*
|
|
18
19
|
* Sets isNotPublic flag on messages to avoid duplicate whitelist checks in processor
|
|
19
20
|
*/
|
|
20
21
|
yieldFilteredMessages(messages: ICommonRunWithMessageDto[], timestamp: number): AsyncGenerator<ICommonRunWithMessageDto>;
|
|
22
|
+
private isNegativeDelayExceeded;
|
|
21
23
|
private isRouteIdValid;
|
|
22
24
|
private isRunNumberValid;
|
|
23
25
|
}
|
|
@@ -20,6 +20,7 @@ const { GeneralError } = GolemioErrorsCore;
|
|
|
20
20
|
const TRAM_SERVICING_ROUTE_ID_MIN = 50;
|
|
21
21
|
const TRAM_SERVICING_ROUTE_ID_MAX = 89;
|
|
22
22
|
const TRAM_UNUSUAL_RUN_NUMBER_MIN = 80;
|
|
23
|
+
const MAX_NEGATIVE_DELAY_IN_MS = 120 * 60 * 1000;
|
|
23
24
|
let TramMessageFilter = class TramMessageFilter {
|
|
24
25
|
constructor(logger, timestampValidator, notPublicVehiclesRepository) {
|
|
25
26
|
this.logger = logger;
|
|
@@ -32,6 +33,7 @@ let TramMessageFilter = class TramMessageFilter {
|
|
|
32
33
|
* - run number is less than 80
|
|
33
34
|
* - OR registration number is in not-public vehicles whitelist (e.g., mazačka maintenance trams)
|
|
34
35
|
* - timestamp is in acceptable range
|
|
36
|
+
* - scheduled timestamp 'tjr' is not more than 120 minutes ahead of 'tm' (negative delay over 120 minutes)
|
|
35
37
|
*
|
|
36
38
|
* Sets isNotPublic flag on messages to avoid duplicate whitelist checks in processor
|
|
37
39
|
*/
|
|
@@ -48,6 +50,13 @@ let TramMessageFilter = class TramMessageFilter {
|
|
|
48
50
|
` is not valid for line ${message.run.line_short_name}, run ${message.run.run_number}`, this.constructor.name, undefined, undefined, "pid"));
|
|
49
51
|
continue;
|
|
50
52
|
}
|
|
53
|
+
if (this.isNegativeDelayExceeded(message)) {
|
|
54
|
+
this.logger.warn(`${this.constructor.name}: message timestamp 'tjr' of value` +
|
|
55
|
+
` '${message.run_message.actual_stop_timestamp_scheduled?.toISOString()}' is more than 120 minutes` +
|
|
56
|
+
` ahead of 'tm' of value '${message.run_message.actual_stop_timestamp_real.toISOString()}'` +
|
|
57
|
+
` (line ${line_short_name}, run ${run_number}, vehicle ${registration_number}), message is skipped.`);
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
51
60
|
// Check if this is a not-public vehicle
|
|
52
61
|
// - Whitelisted registration number (e.g., mazačka maintenance tram)
|
|
53
62
|
// - Whitelisted route name (e.g., ad-hoc routes like X1, X2, NAD)
|
|
@@ -67,6 +76,13 @@ let TramMessageFilter = class TramMessageFilter {
|
|
|
67
76
|
}
|
|
68
77
|
}
|
|
69
78
|
}
|
|
79
|
+
isNegativeDelayExceeded(message) {
|
|
80
|
+
const { actual_stop_timestamp_scheduled: scheduledTimestamp, actual_stop_timestamp_real: realTimestamp } = message.run_message;
|
|
81
|
+
if (!scheduledTimestamp) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
return scheduledTimestamp.getTime() - realTimestamp.getTime() > MAX_NEGATIVE_DELAY_IN_MS;
|
|
85
|
+
}
|
|
70
86
|
isRouteIdValid(routeId) {
|
|
71
87
|
const parsedRouteId = Number.parseInt(routeId);
|
|
72
88
|
return (!Number.isNaN(parsedRouteId) &&
|
package/dist/integration-engine/vehicle-positions/workers/runs/helpers/TramMessageFilter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TramMessageFilter.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/runs/helpers/TramMessageFilter.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,gCAAgC,EAAE,MAAM,mEAAmE,CAAC;AACrH,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AAExE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,iBAAiB,MAAM,6CAA6C,CAAC;AAC5E,MAAM,EAAE,YAAY,EAAE,GAAG,iBAAiB,CAAC;AAE3C,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,2BAA2B,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"TramMessageFilter.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/runs/helpers/TramMessageFilter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { v2PidRouter, v3PidRouter, v4PidRouter } from "#og/pid/index";
|
|
2
|
-
import { v2PublicDeparturesRouter, v2PublicGtfsRouter, v2PublicVPRouter } from "#og/public/index";
|
|
2
|
+
import { v2PublicDeparturesRouter, v2PublicGtfsRouter, v2PublicVPRouter, v3PublicDeparturesRouter } from "#og/public/index";
|
|
3
3
|
import { v2GtfsRouter } from "#og/ropid-gtfs/index";
|
|
4
4
|
import { v2VehiclepositionsRouter } from "#og/vehicle-positions/index";
|
|
5
5
|
import { v1JisRouter } from "./jis/routers/v1/index.js";
|
|
@@ -19,6 +19,7 @@ export const routers = [
|
|
|
19
19
|
//#endregion
|
|
20
20
|
//#region Public Endpoints
|
|
21
21
|
v2PublicDeparturesRouter,
|
|
22
|
+
v3PublicDeparturesRouter,
|
|
22
23
|
v2PublicGtfsRouter,
|
|
23
24
|
v2PublicVPRouter,
|
|
24
25
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/output-gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/output-gateway/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5H,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AACnD,OAAO,KAAK,gBAAgB,MAAM,8BAA8B,CAAC;AAEjE,MAAM,CAAC,MAAM,OAAO,GAAG;IACnB,oBAAoB;IACpB,YAAY;IACZ,YAAY;IAEZ,2BAA2B;IAC3B,wBAAwB;IAExB,8BAA8B;IAC9B,WAAW;IACX,WAAW;IACX,WAAW;IACX,YAAY;IAEZ,0BAA0B;IAC1B,wBAAwB;IACxB,wBAAwB;IACxB,kBAAkB;IAClB,gBAAgB;IAChB,YAAY;IAEZ,uBAAuB;IACvB,WAAW;IACX,YAAY;CACf,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ParsedQs } from "@golemio/core/dist/shared/qs.js";
|
|
2
|
+
import { type IDepartureBoardsParams, type IDepartureBoardsStopIdGroups } from "../v2/interfaces/PublicParamsInterfaces.js";
|
|
3
|
+
export declare class DepartureBoardsParamsParser {
|
|
4
|
+
static parseDepartureParams(query: ParsedQs): IDepartureBoardsParams;
|
|
5
|
+
static parseStopIds(stopIdsFromInput: string[]): Set<IDepartureBoardsStopIdGroups>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export class DepartureBoardsParamsParser {
|
|
2
|
+
static parseDepartureParams(query) {
|
|
3
|
+
return {
|
|
4
|
+
stopIds: this.parseStopIds(query.stopIds instanceof Array ? query.stopIds : [query.stopIds]),
|
|
5
|
+
routeShortNames: query.routeShortNames
|
|
6
|
+
? query.routeShortNames instanceof Array
|
|
7
|
+
? query.routeShortNames
|
|
8
|
+
: [query.routeShortNames]
|
|
9
|
+
: null,
|
|
10
|
+
limit: query.limit ? parseInt(query.limit) : 5,
|
|
11
|
+
minutesAfter: query.minutesAfter ? parseInt(query.minutesAfter) : 60,
|
|
12
|
+
minutesBefore: query.minutesBefore ? parseInt(query.minutesBefore) : 0,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
static parseStopIds(stopIdsFromInput) {
|
|
16
|
+
const output = new Set();
|
|
17
|
+
for (const stopId of stopIdsFromInput) {
|
|
18
|
+
const parsed = JSON.parse(stopId);
|
|
19
|
+
const priority = Object.keys(parsed)[0];
|
|
20
|
+
const stopIds = parsed[priority];
|
|
21
|
+
output.add({
|
|
22
|
+
priority: Number.parseInt(priority),
|
|
23
|
+
stopIds: [...new Set(stopIds)],
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
return output;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=DepartureBoardsParamsParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DepartureBoardsParamsParser.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/controllers/helpers/DepartureBoardsParamsParser.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,2BAA2B;IAC7B,MAAM,CAAC,oBAAoB,CAAC,KAAe;QAC9C,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,YAAY,KAAK,CAAC,CAAC,CAAE,KAAK,CAAC,OAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAiB,CAAC,CAAC;YACpH,eAAe,EAAE,KAAK,CAAC,eAAe;gBAClC,CAAC,CAAC,KAAK,CAAC,eAAe,YAAY,KAAK;oBACpC,CAAC,CAAE,KAAK,CAAC,eAA4B;oBACrC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAyB,CAAC;gBACvC,CAAC,CAAC,IAAI;YACV,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAsB,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9E,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;SACnF,CAAC;IACN,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,gBAA0B;QACjD,MAAM,MAAM,GAAsC,IAAI,GAAG,EAAE,CAAC;QAE5D,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,OAAO,GAAa,MAAM,CAAC,QAAQ,CAAC,CAAC;YAE3C,MAAM,CAAC,GAAG,CAAC;gBACP,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACnC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;aACjC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ"}
|
|
@@ -3,6 +3,7 @@ import { OgModuleToken } from "#og/public/ioc/OgModuleToken";
|
|
|
3
3
|
import { createChildSpan } from "@golemio/core/dist/monitoring/opentelemetry/trace-provider.js";
|
|
4
4
|
import ExpressValidatorCore from "@golemio/core/dist/shared/express-validator.js";
|
|
5
5
|
const { matchedData } = ExpressValidatorCore;
|
|
6
|
+
import { DepartureBoardsParamsParser } from "../helpers/DepartureBoardsParamsParser.js";
|
|
6
7
|
export class V2PublicDepartureBoardsController {
|
|
7
8
|
constructor() {
|
|
8
9
|
this.getAll = async (req, res, next) => {
|
|
@@ -10,13 +11,13 @@ export class V2PublicDepartureBoardsController {
|
|
|
10
11
|
const queryData = matchedData(req);
|
|
11
12
|
try {
|
|
12
13
|
const facade = OgPublicContainer.resolve(OgModuleToken.DepartureBoardFacade);
|
|
13
|
-
const params =
|
|
14
|
+
const params = DepartureBoardsParamsParser.parseDepartureParams(queryData);
|
|
14
15
|
const result = await facade.getAll(params.stopIds, params.limit, params.routeShortNames, params.minutesAfter, params.minutesBefore);
|
|
15
16
|
if (result === null) {
|
|
16
17
|
res.status(404).json([]);
|
|
17
18
|
return;
|
|
18
19
|
}
|
|
19
|
-
res.json(result);
|
|
20
|
+
res.json(result.map((group) => group.departures ?? []));
|
|
20
21
|
}
|
|
21
22
|
catch (err) {
|
|
22
23
|
next(err);
|
|
@@ -26,31 +27,5 @@ export class V2PublicDepartureBoardsController {
|
|
|
26
27
|
}
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
|
-
parseDepartureParams(query) {
|
|
30
|
-
return {
|
|
31
|
-
stopIds: this.parseStopIds(query.stopIds instanceof Array ? query.stopIds : [query.stopIds]),
|
|
32
|
-
routeShortNames: query.routeShortNames
|
|
33
|
-
? query.routeShortNames instanceof Array
|
|
34
|
-
? query.routeShortNames
|
|
35
|
-
: [query.routeShortNames]
|
|
36
|
-
: null,
|
|
37
|
-
limit: query.limit ? parseInt(query.limit) : 5,
|
|
38
|
-
minutesAfter: query.minutesAfter ? parseInt(query.minutesAfter) : 60,
|
|
39
|
-
minutesBefore: query.minutesBefore ? parseInt(query.minutesBefore) : 0,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
parseStopIds(stopIdsFromInput) {
|
|
43
|
-
let output = new Set();
|
|
44
|
-
for (const stopId of stopIdsFromInput) {
|
|
45
|
-
const parsed = JSON.parse(stopId);
|
|
46
|
-
const priority = Object.keys(parsed)[0];
|
|
47
|
-
const stopIds = parsed[priority];
|
|
48
|
-
output.add({
|
|
49
|
-
priority: Number.parseInt(priority),
|
|
50
|
-
stopIds: [...new Set(stopIds)],
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
return output;
|
|
54
|
-
}
|
|
55
30
|
}
|
|
56
31
|
//# sourceMappingURL=V2PublicDepartureBoardsController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"V2PublicDepartureBoardsController.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/controllers/v2/V2PublicDepartureBoardsController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"V2PublicDepartureBoardsController.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/controllers/v2/V2PublicDepartureBoardsController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAChG,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,MAAM,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC;AAC7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAExF,MAAM,OAAO,iCAAiC;IAC1C;QAEO,WAAM,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACrD,MAAM,IAAI,GAAG,eAAe,CAAC,0CAA0C,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAuB,aAAa,CAAC,oBAAoB,CAAC,CAAC;gBACnG,MAAM,MAAM,GAAG,2BAA2B,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;gBAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAC9B,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,aAAa,CACvB,CAAC;gBAEF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACzB,OAAO;gBACX,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;oBAAS,CAAC;gBACP,IAAI,EAAE,GAAG,EAAE,CAAC;YAChB,CAAC;QACL,CAAC,CAAC;IA1Ba,CAAC;CA2BnB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DepartureBoardFacade } from "#og/public/service/facade/DepartureBoardFacade";
|
|
2
|
+
import type { RequestHandler } from "@golemio/core/dist/shared/express.js";
|
|
3
|
+
export declare class V3PublicDepartureBoardsController {
|
|
4
|
+
private readonly departureBoardFacade;
|
|
5
|
+
constructor(departureBoardFacade: DepartureBoardFacade);
|
|
6
|
+
getAll: RequestHandler;
|
|
7
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
import { OgModuleToken } from "#og/public/ioc/OgModuleToken";
|
|
14
|
+
import { DepartureBoardFacade } from "#og/public/service/facade/DepartureBoardFacade";
|
|
15
|
+
import { createChildSpan } from "@golemio/core/dist/monitoring/opentelemetry/trace-provider.js";
|
|
16
|
+
import ExpressValidatorCore from "@golemio/core/dist/shared/express-validator.js";
|
|
17
|
+
const { matchedData } = ExpressValidatorCore;
|
|
18
|
+
import GolemioErrorsCore from "@golemio/core/dist/shared/golemio-errors.js";
|
|
19
|
+
const { GeneralError } = GolemioErrorsCore;
|
|
20
|
+
import { inject, injectable } from "@golemio/core/dist/shared/tsyringe.js";
|
|
21
|
+
import { DepartureBoardsParamsParser } from "../helpers/DepartureBoardsParamsParser.js";
|
|
22
|
+
let V3PublicDepartureBoardsController = class V3PublicDepartureBoardsController {
|
|
23
|
+
constructor(departureBoardFacade) {
|
|
24
|
+
this.departureBoardFacade = departureBoardFacade;
|
|
25
|
+
this.getAll = async (req, res, next) => {
|
|
26
|
+
const span = createChildSpan("V3PublicDepartureBoardsController.getAll");
|
|
27
|
+
const queryData = matchedData(req);
|
|
28
|
+
try {
|
|
29
|
+
const params = DepartureBoardsParamsParser.parseDepartureParams(queryData);
|
|
30
|
+
const result = await this.departureBoardFacade.getAll(params.stopIds, params.limit, params.routeShortNames, params.minutesAfter, params.minutesBefore);
|
|
31
|
+
if (result === null) {
|
|
32
|
+
throw new GeneralError("No departures found for the given stop ids", this.constructor.name, undefined, 404);
|
|
33
|
+
}
|
|
34
|
+
const response = {
|
|
35
|
+
stop_groups: result.map((group) => ({
|
|
36
|
+
priority: group.priority,
|
|
37
|
+
stop_ids: group.stopIds,
|
|
38
|
+
departures: group.departures ?? [],
|
|
39
|
+
})),
|
|
40
|
+
};
|
|
41
|
+
res.json(response);
|
|
42
|
+
}
|
|
43
|
+
catch (err) {
|
|
44
|
+
next(err);
|
|
45
|
+
}
|
|
46
|
+
finally {
|
|
47
|
+
span?.end();
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
V3PublicDepartureBoardsController = __decorate([
|
|
53
|
+
injectable(),
|
|
54
|
+
__param(0, inject(OgModuleToken.DepartureBoardFacade)),
|
|
55
|
+
__metadata("design:paramtypes", [DepartureBoardFacade])
|
|
56
|
+
], V3PublicDepartureBoardsController);
|
|
57
|
+
export { V3PublicDepartureBoardsController };
|
|
58
|
+
//# sourceMappingURL=V3PublicDepartureBoardsController.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"V3PublicDepartureBoardsController.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/controllers/v3/V3PublicDepartureBoardsController.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,+DAA+D,CAAC;AAEhG,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,MAAM,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAAC;AAC7C,OAAO,iBAAiB,MAAM,6CAA6C,CAAC;AAC5E,MAAM,EAAE,YAAY,EAAE,GAAG,iBAAiB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAGjF,IAAM,iCAAiC,GAAvC,MAAM,iCAAiC;IAC1C,YAAwD,oBAA2D;QAA1C,yBAAoB,GAApB,oBAAoB,CAAsB;QAE5G,WAAM,GAAmB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACrD,MAAM,IAAI,GAAG,eAAe,CAAC,0CAA0C,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,2BAA2B,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;gBAC3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CACjD,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,YAAY,EACnB,MAAM,CAAC,aAAa,CACvB,CAAC;gBAEF,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClB,MAAM,IAAI,YAAY,CAAC,4CAA4C,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;gBAChH,CAAC;gBAED,MAAM,QAAQ,GAAuC;oBACjD,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,QAAQ,EAAE,KAAK,CAAC,OAAO;wBACvB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,EAAE;qBACrC,CAAC,CAAC;iBACN,CAAC;gBACF,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;oBAAS,CAAC;gBACP,IAAI,EAAE,GAAG,EAAE,CAAC;YAChB,CAAC;QACL,CAAC,CAAC;IAhCoH,CAAC;CAiC1H,CAAA;AAlCY,iCAAiC;IAD7C,UAAU,EAAE;IAEI,WAAA,MAAM,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAA;qCAAwC,oBAAoB;GAD1G,iCAAiC,CAkC7C"}
|
|
@@ -16,7 +16,7 @@ export interface IPublicApiDepartureRoute {
|
|
|
16
16
|
export interface IPublicApiDepartureTrip {
|
|
17
17
|
id: string;
|
|
18
18
|
headsign: string;
|
|
19
|
-
is_canceled: boolean
|
|
19
|
+
is_canceled: boolean;
|
|
20
20
|
}
|
|
21
21
|
export interface IPublicApiDepartureVehicle {
|
|
22
22
|
id: string | null;
|
|
@@ -32,3 +32,16 @@ export interface IPublicApiDeparture {
|
|
|
32
32
|
vehicle: IPublicApiDepartureVehicle;
|
|
33
33
|
}
|
|
34
34
|
export type PublicApiDepartureBoardGroup = IPublicApiDeparture[];
|
|
35
|
+
export interface IPublicDepartureStopGroupResult {
|
|
36
|
+
priority: number;
|
|
37
|
+
stopIds: string[];
|
|
38
|
+
departures: PublicApiDepartureBoardGroup | null;
|
|
39
|
+
}
|
|
40
|
+
export interface IV3PublicApiDepartureStopGroup {
|
|
41
|
+
priority: number;
|
|
42
|
+
stop_ids: string[];
|
|
43
|
+
departures: PublicApiDepartureBoardGroup;
|
|
44
|
+
}
|
|
45
|
+
export interface IV3PublicApiDepartureBoardResponse {
|
|
46
|
+
stop_groups: IV3PublicApiDepartureStopGroup[];
|
|
47
|
+
}
|
|
@@ -5,6 +5,7 @@ import { CoreToken } from "@golemio/core/dist/helpers/ioc/CoreToken.js";
|
|
|
5
5
|
import { OutputGatewayContainer } from "@golemio/core/dist/output-gateway/ioc/Di.js";
|
|
6
6
|
import { instanceCachingFactory } from "@golemio/core/dist/shared/tsyringe.js";
|
|
7
7
|
import { VehicleDescriptorCachedRepository } from "#og/public/data-access/VehicleDescriptorCachedRepository";
|
|
8
|
+
import { V3PublicDepartureBoardsController } from "../controllers/v3/V3PublicDepartureBoardsController.js";
|
|
8
9
|
import { DelayComputationRepository } from "../data-access/redis/DelayComputationRepository.js";
|
|
9
10
|
import { PublicGtfsDepartureRepository } from "../data-access/redis/PublicGtfsDepartureRepository.js";
|
|
10
11
|
import { PublicStopTimeRepository } from "../data-access/redis/PublicStopTimeRepository.js";
|
|
@@ -76,6 +77,7 @@ ogPublicContainer.register(OgModuleToken.DepartureBoardFacade, {
|
|
|
76
77
|
return new DepartureBoardFacade(c.resolve(OgModuleToken.PublicGtfsDepartureRepository), c.resolve(OgModuleToken.PublicVehiclePositionsRepository), c.resolve(OgModuleToken.PublicStopTimeRepository), c.resolve(OgModuleToken.VehicleDescriptorCachedRepository), c.resolve(OgModuleToken.GtfsStopsRedisRepository));
|
|
77
78
|
}),
|
|
78
79
|
});
|
|
80
|
+
ogPublicContainer.registerSingleton(OgModuleToken.V3PublicDepartureBoardsController, V3PublicDepartureBoardsController);
|
|
79
81
|
ogPublicContainer.register(OgModuleToken.VPSubscriber, {
|
|
80
82
|
useFactory: instanceCachingFactory((c) => {
|
|
81
83
|
const config = c.resolve(CoreToken.SimpleConfig);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/ioc/Di.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/ioc/Di.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ export const OgModuleToken = {
|
|
|
29
29
|
PublicVehiclePositionsFacade: Symbol("PublicVehiclePositionsFacade"),
|
|
30
30
|
DetailedTripFacade: Symbol("DetailedTripFacade"),
|
|
31
31
|
DepartureBoardFacade: Symbol("DepartureBoardFacade"),
|
|
32
|
+
V3PublicDepartureBoardsController: Symbol("V3PublicDepartureBoardsController"),
|
|
32
33
|
VPSubscriber: Symbol("VPSubscriber"),
|
|
33
34
|
GtfsStopsSubscriber: Symbol("GtfsStopsSubscriber"),
|
|
34
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OgModuleToken.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/ioc/OgModuleToken.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,6BAA6B,EAAE,MAAM,CAAC,+BAA+B,CAAC;IACtE,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,qCAAqC;IACrC,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,yBAAyB,EAAE,MAAM,CAAC,2BAA2B,CAAC;IAC9D,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,CAAC;IACxD,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,uBAAuB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IAC1D,YAAY;IACZ,uCAAuC;IACvC,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,kCAAkC,EAAE,MAAM,CAAC,oCAAoC,CAAC;IAChF,yCAAyC,EAAE,MAAM,CAAC,2CAA2C,CAAC;IAC9F,qCAAqC,EAAE,MAAM,CAAC,uCAAuC,CAAC;IACtF,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,6BAA6B,EAAE,MAAM,CAAC,+BAA+B,CAAC;IACtE,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,qCAAqC,EAAE,MAAM,CAAC,uCAAuC,CAAC;IACtF,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,YAAY;IACZ,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,4BAA4B,EAAE,MAAM,CAAC,8BAA8B,CAAC;IACpE,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC;IACpC,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;CACrD,CAAC"}
|
|
1
|
+
{"version":3,"file":"OgModuleToken.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/ioc/OgModuleToken.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG;IACzB,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,6BAA6B,EAAE,MAAM,CAAC,+BAA+B,CAAC;IACtE,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,qCAAqC;IACrC,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,yBAAyB,EAAE,MAAM,CAAC,2BAA2B,CAAC;IAC9D,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,CAAC;IACxD,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,uBAAuB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IAC1D,YAAY;IACZ,uCAAuC;IACvC,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,kCAAkC,EAAE,MAAM,CAAC,oCAAoC,CAAC;IAChF,yCAAyC,EAAE,MAAM,CAAC,2CAA2C,CAAC;IAC9F,qCAAqC,EAAE,MAAM,CAAC,uCAAuC,CAAC;IACtF,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,6BAA6B,EAAE,MAAM,CAAC,+BAA+B,CAAC;IACtE,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,qCAAqC,EAAE,MAAM,CAAC,uCAAuC,CAAC;IACtF,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,YAAY;IACZ,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,4BAA4B,EAAE,MAAM,CAAC,8BAA8B,CAAC;IACpE,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,YAAY,EAAE,MAAM,CAAC,cAAc,CAAC;IACpC,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;CACrD,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { v2PublicDeparturesRouter } from "./v2/V2PublicDeparturesRouter.js";
|
|
2
|
+
export { v3PublicDeparturesRouter } from "./v3/V3PublicDeparturesRouter.js";
|
|
2
3
|
export { v2PublicGtfsRouter } from "./v2/V2PublicGtfsRouter.js";
|
|
3
4
|
export { v2PublicVPRouter } from "./v2/V2PublicVehiclePositionsRouter.js";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { v2PublicDeparturesRouter } from "./v2/V2PublicDeparturesRouter.js";
|
|
2
|
+
export { v3PublicDeparturesRouter } from "./v3/V3PublicDeparturesRouter.js";
|
|
2
3
|
export { v2PublicGtfsRouter } from "./v2/V2PublicGtfsRouter.js";
|
|
3
4
|
export { v2PublicVPRouter } from "./v2/V2PublicVehiclePositionsRouter.js";
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/routers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/output-gateway/public/routers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AbstractRouter } from "@golemio/core/dist/helpers/routing/AbstractRouter.js";
|
|
2
|
+
import type { Router as TRouter } from "@golemio/core/dist/shared/express.js";
|
|
3
|
+
export declare class V3PublicDeparturesRouter extends AbstractRouter {
|
|
4
|
+
router: TRouter;
|
|
5
|
+
private cacheHeaderMiddleware;
|
|
6
|
+
private compressionByDefaultMiddleware;
|
|
7
|
+
private departureController;
|
|
8
|
+
constructor();
|
|
9
|
+
protected initRoutes(): void;
|
|
10
|
+
}
|
|
11
|
+
declare const v3PublicDeparturesRouter: AbstractRouter;
|
|
12
|
+
export { v3PublicDeparturesRouter };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { OgPublicContainer } from "#og/public/ioc/Di";
|
|
2
|
+
import { OgModuleToken } from "#og/public/ioc/OgModuleToken";
|
|
3
|
+
import { RouteVersion } from "#og/shared/constants/index";
|
|
4
|
+
import { AbstractRouter } from "@golemio/core/dist/helpers/routing/AbstractRouter.js";
|
|
5
|
+
import { checkErrors } from "@golemio/core/dist/output-gateway/Validation.js";
|
|
6
|
+
import { ContainerToken } from "@golemio/core/dist/output-gateway/ioc/index.js";
|
|
7
|
+
import ExpressCore from "@golemio/core/dist/shared/express.js";
|
|
8
|
+
const { Router } = ExpressCore;
|
|
9
|
+
import ExpressValidatorCore from "@golemio/core/dist/shared/express-validator.js";
|
|
10
|
+
const { query } = ExpressValidatorCore;
|
|
11
|
+
import { CustomStopIdGroupValidator } from "../v2/helpers/CustomStopIdGroupValidator.js";
|
|
12
|
+
export class V3PublicDeparturesRouter extends AbstractRouter {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(RouteVersion.v3, "public/departureboards");
|
|
15
|
+
this.router = Router();
|
|
16
|
+
this.cacheHeaderMiddleware = OgPublicContainer.resolve(ContainerToken.CacheHeaderMiddleware);
|
|
17
|
+
this.compressionByDefaultMiddleware = OgPublicContainer.resolve(ContainerToken.CompressionByDefaultMiddleware);
|
|
18
|
+
this.departureController = OgPublicContainer.resolve(OgModuleToken.V3PublicDepartureBoardsController);
|
|
19
|
+
// GtfsStopsSubscriber is initialized by the v2 router (shared singleton, initialize is not idempotent).
|
|
20
|
+
// Take over the initialization here when the v2 router is removed.
|
|
21
|
+
this.initRoutes();
|
|
22
|
+
}
|
|
23
|
+
initRoutes() {
|
|
24
|
+
this.router.get("/", [
|
|
25
|
+
query("stopIds").exists().custom(CustomStopIdGroupValidator.validate),
|
|
26
|
+
query("limit").optional().isInt({ min: 1, max: 30 }).not().isArray(),
|
|
27
|
+
query("routeShortNames").optional().not().isEmpty({ ignore_whitespace: true }),
|
|
28
|
+
query("minutesAfter").optional().isInt({ min: 1, max: 360 }).not().isArray(),
|
|
29
|
+
query("minutesBefore").optional().isInt({ min: -359, max: 30 }).not().isArray(),
|
|
30
|
+
], checkErrors,
|
|
31
|
+
// max-age 3 seconds, stale-while-revalidate 2 seconds
|
|
32
|
+
this.cacheHeaderMiddleware.getMiddleware(3, 2), this.compressionByDefaultMiddleware.getMiddleware(), this.departureController.getAll);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const v3PublicDeparturesRouter = new V3PublicDeparturesRouter();
|
|
36
|
+
export { v3PublicDeparturesRouter };
|
|
37
|
+
//# sourceMappingURL=V3PublicDeparturesRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"V3PublicDeparturesRouter.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/routers/v3/V3PublicDeparturesRouter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sDAAsD,CAAC;AAGtF,OAAO,EAAE,WAAW,EAAE,MAAM,iDAAiD,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAEhF,OAAO,WAAW,MAAM,sCAAsC,CAAC;AAC/D,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC;AAC/B,OAAO,oBAAoB,MAAM,gDAAgD,CAAC;AAClF,MAAM,EAAE,KAAK,EAAE,GAAG,oBAAoB,CAAC;AACvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,6CAA6C,CAAC;AAEzF,MAAM,OAAO,wBAAyB,SAAQ,cAAc;IAMxD;QACI,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,qBAAqB,GAAG,iBAAiB,CAAC,OAAO,CAAwB,cAAc,CAAC,qBAAqB,CAAC,CAAC;QACpH,IAAI,CAAC,8BAA8B,GAAG,iBAAiB,CAAC,OAAO,CAC3D,cAAc,CAAC,8BAA8B,CAChD,CAAC;QACF,IAAI,CAAC,mBAAmB,GAAG,iBAAiB,CAAC,OAAO,CAChD,aAAa,CAAC,iCAAiC,CAClD,CAAC;QACF,wGAAwG;QACxG,mEAAmE;QACnE,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;IAES,UAAU;QAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CACX,GAAG,EACH;YACI,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,0BAA0B,CAAC,QAAQ,CAAC;YACrE,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;YACpE,KAAK,CAAC,iBAAiB,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;YAC9E,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;YAC5E,KAAK,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;SAClF,EACD,WAAW;QACX,sDAAsD;QACtD,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,EAC9C,IAAI,CAAC,8BAA8B,CAAC,aAAa,EAAE,EACnD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAClC,CAAC;IACN,CAAC;CACJ;AAED,MAAM,wBAAwB,GAAmB,IAAI,wBAAwB,EAAE,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type IDepartureBoardsStopIdGroups } from "#og/public/controllers/v2/interfaces/PublicParamsInterfaces";
|
|
2
2
|
import { VehicleDescriptorCachedRepository } from "#og/public/data-access/VehicleDescriptorCachedRepository";
|
|
3
3
|
import { GtfsStopsRedisRepository } from "#og/ropid-gtfs/data-access/redis/GtfsStopsRedisRepository";
|
|
4
|
-
import { type
|
|
4
|
+
import { type IPublicDepartureStopGroupResult } from "#og/public/domain/PublicApiDepartureInterfaces";
|
|
5
5
|
import { type IGtfsDepartureRepository } from "#og/public/domain/repository/IGtfsDepartureRepository";
|
|
6
6
|
import { type IStopTimeRepository } from "#og/public/domain/repository/IStopTimeRepository";
|
|
7
7
|
import { type IVehiclePositionsRepository } from "#og/public/domain/repository/IVehiclePositionsRepository";
|
|
@@ -15,7 +15,7 @@ export declare class DepartureBoardFacade {
|
|
|
15
15
|
private static readonly OPEN_MINUTES_IN_PAST;
|
|
16
16
|
private static readonly OPEN_MINUTES_IN_PAST_MS;
|
|
17
17
|
constructor(departureRepository: IGtfsDepartureRepository, tripRepository: IVehiclePositionsRepository, stopTimeRepository: IStopTimeRepository, descriptorRepository: VehicleDescriptorCachedRepository, gtfsStopsRepository: GtfsStopsRedisRepository);
|
|
18
|
-
getAll(stopIds: Set<IDepartureBoardsStopIdGroups>, limit: number, routeShortNames: string[] | null, minutesAfter: number, minutesBefore: number): Promise<
|
|
18
|
+
getAll(stopIds: Set<IDepartureBoardsStopIdGroups>, limit: number, routeShortNames: string[] | null, minutesAfter: number, minutesBefore: number): Promise<IPublicDepartureStopGroupResult[] | null>;
|
|
19
19
|
private handleStopGroupDepartures;
|
|
20
20
|
private duplicateDeparturesWithDifferentVehicleIds;
|
|
21
21
|
private filterForExistingStopIds;
|
|
@@ -31,16 +31,11 @@ export class DepartureBoardFacade {
|
|
|
31
31
|
if (output.every((value) => value === null)) {
|
|
32
32
|
return null;
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
else {
|
|
40
|
-
return value;
|
|
41
|
-
}
|
|
42
|
-
});
|
|
43
|
-
}
|
|
34
|
+
return output.map((departures, index) => ({
|
|
35
|
+
priority: sortedStopGroups[index].priority,
|
|
36
|
+
stopIds: sortedStopGroups[index].requestedStopIds,
|
|
37
|
+
departures,
|
|
38
|
+
}));
|
|
44
39
|
}
|
|
45
40
|
async handleStopGroupDepartures(stopGroup, limit, routeShortNames, minutesAfter, minutesBefore) {
|
|
46
41
|
let outputGroup = [];
|
|
@@ -146,6 +141,7 @@ export class DepartureBoardFacade {
|
|
|
146
141
|
for (const group of groups) {
|
|
147
142
|
filteredGroups.push({
|
|
148
143
|
priority: group.priority,
|
|
144
|
+
requestedStopIds: group.stopIds,
|
|
149
145
|
stopIds: group.stopIds.filter((s) => foundStopIds.has(s)),
|
|
150
146
|
});
|
|
151
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DepartureBoardFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/service/facade/DepartureBoardFacade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"DepartureBoardFacade.js","sourceRoot":"","sources":["../../../../../src/output-gateway/public/service/facade/DepartureBoardFacade.ts"],"names":[],"mappings":"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"}
|
package/docs/jis/index.md
CHANGED
|
@@ -296,11 +296,11 @@ Endpoint je interní (přístup jen s příslušnou rolí v Golemio Access Proxy
|
|
|
296
296
|
|
|
297
297
|
### Události — GTFS-RT `alerts.pb`
|
|
298
298
|
|
|
299
|
-
Feed generuje `GenerateFilesTask` (`GtfsRealTimeWorker`) a obsahuje jen události, které mají `type` `INCIDENT`, organizaci z `module.pid.jis.gtfsRt.events.allowedOrgs.*`, nejsou smazané a `active_period_end` je `NULL` nebo >= aktuální čas. Entita má id `alert-{id události}`, `informedEntity` obsahuje `routeId` GTFS-známých tras (viz [asymetrie](#asymetrie-gtfs-rt-protobuf-alertspb-vs-custom-format-webhook-výstup)), `url` je v případě nevyplněné hodnoty nahrazeno odkazem na detail mimořádnosti na webu PID. Texty jsou jen v `cs`/`en`.
|
|
299
|
+
Feed generuje `GenerateFilesTask` (`GtfsRealTimeWorker`) a obsahuje jen události, které mají `type` `INCIDENT`, organizaci z `module.pid.jis.gtfsRt.events.allowedOrgs.*`, nejsou smazané a `active_period_end` je `NULL` nebo >= aktuální čas. Entita má id `alert-{id události}`, `informedEntity` obsahuje `routeId` GTFS-známých tras (viz [asymetrie](#asymetrie-gtfs-rt-protobuf-alertspb-vs-custom-format-webhook-výstup)), `url` je v případě nevyplněné hodnoty nahrazeno odkazem na detail mimořádnosti na webu PID. `severityLevel` odpovídá `severity_level` události (`INFO`/`WARNING`/`SEVERE` 1:1). Texty jsou jen v `cs`/`en`.
|
|
300
300
|
|
|
301
301
|
### Infotexty — GTFS-RT `pid_display_alerts.pb`
|
|
302
302
|
|
|
303
|
-
Experimentální feed pro e-paper displeje, generovaný stejným taskem. Obsahuje infotexty navázané na uloženou událost (`event_id` → `jis_infotexts.jis_event_id`), které jsou právě aktivní (včetně časového okna `repeat`) a mají zastávky. Na každé zastávce zůstanou jen infotexty s nejvyšší závažností (`JISInfotextStopSuppressionFilter`). Entita má id `alert-{id infotextu}`, `informedEntity` obsahuje `stopId`, `severityLevel` je `WARNING` pro `display_type` `INLINE` a `SEVERE` pro `GENERAL
|
|
303
|
+
Experimentální feed pro e-paper displeje, generovaný stejným taskem. Obsahuje infotexty navázané na uloženou událost (`event_id` → `jis_infotexts.jis_event_id`), které jsou právě aktivní (včetně časového okna `repeat`) a mají zastávky. Na každé zastávce zůstanou jen infotexty s nejvyšší závažností (`JISInfotextStopSuppressionFilter`). Entita má id `alert-{id infotextu}`, `informedEntity` obsahuje `stopId`, `severityLevel` je `WARNING` pro `display_type` `INLINE` a `SEVERE` pro `GENERAL` (záměrně se neodvozuje ze `severity_level`, takže se může lišit od `alerts.pb`); `descriptionText` pochází z infotextu, ostatní pole (`cause`, `cause_detail`, `effect`, `url`, `header_text`) z navázané události (i typu `INTERNAL`).
|
|
304
304
|
|
|
305
305
|
### Infotexty — API odjezdových a přestupních tabulí
|
|
306
306
|
|
package/docs/openapi-output.yaml
CHANGED
|
@@ -49,6 +49,9 @@ tags:
|
|
|
49
49
|
|
|
50
50
|
- name: 🕒 Public Departures (v2)
|
|
51
51
|
description: <img src="https://img.shields.io/badge/opendata-available-green" alt="golemioapi-opendata-badge" />
|
|
52
|
+
|
|
53
|
+
- name: 🕒 Public Departures (v3)
|
|
54
|
+
description: <img src="https://img.shields.io/badge/opendata-available-green" alt="golemioapi-opendata-badge" />
|
|
52
55
|
- name: ⚠ JIS (v1) - internal
|
|
53
56
|
description: Endpoints for internal use
|
|
54
57
|
|
|
@@ -997,7 +1000,7 @@ paths:
|
|
|
997
1000
|
/v2/vehiclepositions/gtfsrt/alerts.pb:
|
|
998
1001
|
get:
|
|
999
1002
|
summary: GET GTFS-RT Service Alerts Feed
|
|
1000
|
-
description: ""
|
|
1003
|
+
description: "Current PID incidents."
|
|
1001
1004
|
tags:
|
|
1002
1005
|
- 🗺 GTFS Realtime (v2)
|
|
1003
1006
|
responses:
|
|
@@ -2098,6 +2101,7 @@ paths:
|
|
|
2098
2101
|
summary: Get Departure Boards
|
|
2099
2102
|
description: |
|
|
2100
2103
|
ℹ️ Note: This endpoint is optimized for client applications serving many users simultaneously. It provides streamlined data structures and caching strategies suitable for client-side consumption. Rate limits can be adjusted upon request - contact us if you need higher limits. Note: Despite the 'public' prefix, this endpoint requires an API key for access control and usage monitoring.
|
|
2104
|
+
New integrations should use `/v3/public/departureboards`.
|
|
2101
2105
|
parameters:
|
|
2102
2106
|
- in: query
|
|
2103
2107
|
name: stopIds
|
|
@@ -2131,7 +2135,7 @@ paths:
|
|
|
2131
2135
|
required: false
|
|
2132
2136
|
schema:
|
|
2133
2137
|
type: integer
|
|
2134
|
-
minimum:
|
|
2138
|
+
minimum: 1
|
|
2135
2139
|
maximum: 360
|
|
2136
2140
|
description: Default is 60. Maximum is 360 (6 hours)
|
|
2137
2141
|
example: 60
|
|
@@ -2163,7 +2167,7 @@ paths:
|
|
|
2163
2167
|
description: Cache control directive for caching proxies
|
|
2164
2168
|
schema:
|
|
2165
2169
|
type: string
|
|
2166
|
-
example: public, s-maxage=
|
|
2170
|
+
example: public, s-maxage=3, stale-while-revalidate=2
|
|
2167
2171
|
content:
|
|
2168
2172
|
application/json:
|
|
2169
2173
|
schema:
|
|
@@ -2186,6 +2190,94 @@ paths:
|
|
|
2186
2190
|
maxItems: 0
|
|
2187
2191
|
items:
|
|
2188
2192
|
type: object
|
|
2193
|
+
/v3/public/departureboards:
|
|
2194
|
+
get:
|
|
2195
|
+
tags:
|
|
2196
|
+
- 🕒 Public Departures (v3)
|
|
2197
|
+
summary: Get Departure Boards
|
|
2198
|
+
description: |
|
|
2199
|
+
ℹ️ Note: This endpoint is optimized for client applications serving many users simultaneously. It provides streamlined data structures and caching strategies suitable for client-side consumption. Rate limits can be adjusted upon request - contact us if you need higher limits. Note: Despite the 'public' prefix, this endpoint requires an API key for access control and usage monitoring.
|
|
2200
|
+
Departures are returned grouped by the requested priority groups, each with the requested stop IDs.
|
|
2201
|
+
parameters:
|
|
2202
|
+
- in: query
|
|
2203
|
+
name: stopIds
|
|
2204
|
+
required: true
|
|
2205
|
+
schema:
|
|
2206
|
+
type: array
|
|
2207
|
+
items:
|
|
2208
|
+
type: string
|
|
2209
|
+
example: ["{\"0\": [\"U717Z5P\"]}", "{\"1\": [\"U718Z5P\", \"U719Z5P\"]}"]
|
|
2210
|
+
description: |
|
|
2211
|
+
Groups of stop IDs formatted as JSON (index/priority -> stop IDs). For example ?stopIds[]={\"0\": [\"U717Z5P\"]}&stopIds[]={\"1\": [\"U718Z5P\", \"U719Z5P\"]}.
|
|
2212
|
+
The maximum number of groups is 50. The maximum number of stops in one group is 50. The maximum number of stops combined is 50.
|
|
2213
|
+
- in: query
|
|
2214
|
+
name: limit
|
|
2215
|
+
required: false
|
|
2216
|
+
schema:
|
|
2217
|
+
type: integer
|
|
2218
|
+
description: Limit for each group of departures. Default is 5. Maximum is 30.
|
|
2219
|
+
example: 5
|
|
2220
|
+
- in: query
|
|
2221
|
+
name: routeShortNames
|
|
2222
|
+
required: false
|
|
2223
|
+
schema:
|
|
2224
|
+
type: array
|
|
2225
|
+
items:
|
|
2226
|
+
type: string
|
|
2227
|
+
example: ["27"]
|
|
2228
|
+
description: Default is null
|
|
2229
|
+
- in: query
|
|
2230
|
+
name: minutesAfter
|
|
2231
|
+
required: false
|
|
2232
|
+
schema:
|
|
2233
|
+
type: integer
|
|
2234
|
+
minimum: 1
|
|
2235
|
+
maximum: 360
|
|
2236
|
+
description: Default is 60. Maximum is 360 (6 hours)
|
|
2237
|
+
example: 60
|
|
2238
|
+
- in: query
|
|
2239
|
+
name: minutesBefore
|
|
2240
|
+
required: false
|
|
2241
|
+
schema:
|
|
2242
|
+
type: integer
|
|
2243
|
+
minimum: -359
|
|
2244
|
+
maximum: 30
|
|
2245
|
+
description: "Set the starting point of the departure retrieval window, in minutes, relative to now (or to timeFrom, if used). Positive values will return departures starting earlier in the past. Negative values will return departures starting later in the future. This setting helps account for walking time to the stop. Example: 2 returns departures that left 2 minutes ago. -10 returns departures no earlier than 10 minutes from now. Default is set to 0. Maximum value is 30. Minimum value is -359."
|
|
2246
|
+
example: 0
|
|
2247
|
+
- in: header
|
|
2248
|
+
name: Accept-Encoding
|
|
2249
|
+
description: Indicate the content encoding (usually a compression algorithm) that the client can understand. See [mdn](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding) for more details. Note that for this endpoint, if no value is given, gzip compression will be used by default (the `identity` value can be used to opt out of the default compression).
|
|
2250
|
+
required: false
|
|
2251
|
+
schema:
|
|
2252
|
+
oneOf:
|
|
2253
|
+
- type: string
|
|
2254
|
+
enum:
|
|
2255
|
+
- gzip
|
|
2256
|
+
- identity
|
|
2257
|
+
|
|
2258
|
+
responses:
|
|
2259
|
+
200:
|
|
2260
|
+
description: OK
|
|
2261
|
+
headers:
|
|
2262
|
+
Cache-Control:
|
|
2263
|
+
description: Cache control directive for caching proxies
|
|
2264
|
+
schema:
|
|
2265
|
+
type: string
|
|
2266
|
+
example: public, s-maxage=3, stale-while-revalidate=2
|
|
2267
|
+
content:
|
|
2268
|
+
application/json:
|
|
2269
|
+
schema:
|
|
2270
|
+
$ref: "#/components/schemas/PublicDepartureBoardsResponse"
|
|
2271
|
+
400:
|
|
2272
|
+
$ref: "#/components/responses/BadRequestError"
|
|
2273
|
+
401:
|
|
2274
|
+
$ref: "#/components/responses/UnauthorizedError"
|
|
2275
|
+
404:
|
|
2276
|
+
description: Not found - no stops found for the given query parameters
|
|
2277
|
+
content:
|
|
2278
|
+
application/json:
|
|
2279
|
+
schema:
|
|
2280
|
+
$ref: "#/components/schemas/NotFoundErrorObject"
|
|
2189
2281
|
/v1/jis/events/custom-format:
|
|
2190
2282
|
get:
|
|
2191
2283
|
tags:
|
|
@@ -2262,23 +2354,7 @@ components:
|
|
|
2262
2354
|
content:
|
|
2263
2355
|
application/json:
|
|
2264
2356
|
schema:
|
|
2265
|
-
|
|
2266
|
-
properties:
|
|
2267
|
-
error_message:
|
|
2268
|
-
type: string
|
|
2269
|
-
example: "Bad request"
|
|
2270
|
-
nullable: false
|
|
2271
|
-
error_status:
|
|
2272
|
-
type: integer
|
|
2273
|
-
example: 400
|
|
2274
|
-
nullable: false
|
|
2275
|
-
error_info:
|
|
2276
|
-
type: string
|
|
2277
|
-
example: "{...}"
|
|
2278
|
-
nullable: true
|
|
2279
|
-
required:
|
|
2280
|
-
- error_message
|
|
2281
|
-
- error_status
|
|
2357
|
+
$ref: "#/components/schemas/BadRequestErrorObject"
|
|
2282
2358
|
|
|
2283
2359
|
UnauthorizedError:
|
|
2284
2360
|
description: API key is missing or invalid
|
|
@@ -2289,19 +2365,7 @@ components:
|
|
|
2289
2365
|
content:
|
|
2290
2366
|
application/json:
|
|
2291
2367
|
schema:
|
|
2292
|
-
|
|
2293
|
-
properties:
|
|
2294
|
-
error_message:
|
|
2295
|
-
type: string
|
|
2296
|
-
example: "Unauthorized. Failed to authenticate user."
|
|
2297
|
-
nullable: false
|
|
2298
|
-
error_status:
|
|
2299
|
-
type: integer
|
|
2300
|
-
example: 401
|
|
2301
|
-
nullable: false
|
|
2302
|
-
required:
|
|
2303
|
-
- error_message
|
|
2304
|
-
- error_status
|
|
2368
|
+
$ref: "#/components/schemas/UnauthorizedErrorObject"
|
|
2305
2369
|
|
|
2306
2370
|
|
|
2307
2371
|
parameters:
|
|
@@ -4093,27 +4157,113 @@ components:
|
|
|
4093
4157
|
enum:
|
|
4094
4158
|
- Point
|
|
4095
4159
|
|
|
4160
|
+
BadRequestErrorObject:
|
|
4161
|
+
type: object
|
|
4162
|
+
properties:
|
|
4163
|
+
error_message:
|
|
4164
|
+
type: string
|
|
4165
|
+
example: "Bad request"
|
|
4166
|
+
nullable: false
|
|
4167
|
+
error_status:
|
|
4168
|
+
type: integer
|
|
4169
|
+
example: 400
|
|
4170
|
+
nullable: false
|
|
4171
|
+
error_info:
|
|
4172
|
+
type: string
|
|
4173
|
+
example: "{...}"
|
|
4174
|
+
nullable: true
|
|
4175
|
+
required:
|
|
4176
|
+
- error_message
|
|
4177
|
+
- error_status
|
|
4178
|
+
|
|
4179
|
+
UnauthorizedErrorObject:
|
|
4180
|
+
type: object
|
|
4181
|
+
properties:
|
|
4182
|
+
error_message:
|
|
4183
|
+
type: string
|
|
4184
|
+
example: "Unauthorized. Failed to authenticate user."
|
|
4185
|
+
nullable: false
|
|
4186
|
+
error_status:
|
|
4187
|
+
type: integer
|
|
4188
|
+
example: 401
|
|
4189
|
+
nullable: false
|
|
4190
|
+
required:
|
|
4191
|
+
- error_message
|
|
4192
|
+
- error_status
|
|
4193
|
+
|
|
4194
|
+
NotFoundErrorObject:
|
|
4195
|
+
type: object
|
|
4196
|
+
properties:
|
|
4197
|
+
error_message:
|
|
4198
|
+
type: string
|
|
4199
|
+
example: "Not Found"
|
|
4200
|
+
nullable: false
|
|
4201
|
+
error_status:
|
|
4202
|
+
type: integer
|
|
4203
|
+
example: 404
|
|
4204
|
+
nullable: false
|
|
4205
|
+
required:
|
|
4206
|
+
- error_message
|
|
4207
|
+
- error_status
|
|
4208
|
+
|
|
4209
|
+
PublicDepartureBoardsResponse:
|
|
4210
|
+
type: object
|
|
4211
|
+
properties:
|
|
4212
|
+
stop_groups:
|
|
4213
|
+
type: array
|
|
4214
|
+
items:
|
|
4215
|
+
$ref: "#/components/schemas/PublicDepartureStopGroup"
|
|
4216
|
+
required:
|
|
4217
|
+
- stop_groups
|
|
4218
|
+
|
|
4219
|
+
PublicDepartureStopGroup:
|
|
4220
|
+
type: object
|
|
4221
|
+
properties:
|
|
4222
|
+
priority:
|
|
4223
|
+
type: integer
|
|
4224
|
+
description: Priority of the group as requested
|
|
4225
|
+
example: 0
|
|
4226
|
+
nullable: false
|
|
4227
|
+
stop_ids:
|
|
4228
|
+
type: array
|
|
4229
|
+
description: Stop IDs of the group as requested (duplicates removed)
|
|
4230
|
+
items:
|
|
4231
|
+
type: string
|
|
4232
|
+
example: ["U717Z5P"]
|
|
4233
|
+
departures:
|
|
4234
|
+
type: array
|
|
4235
|
+
description: Departures for the group, empty if there are none or the stops are unknown
|
|
4236
|
+
items:
|
|
4237
|
+
$ref: "#/components/schemas/PublicDepartureItem"
|
|
4238
|
+
required:
|
|
4239
|
+
- priority
|
|
4240
|
+
- stop_ids
|
|
4241
|
+
- departures
|
|
4242
|
+
|
|
4096
4243
|
PublicDepartureGroup:
|
|
4097
4244
|
type: array
|
|
4098
4245
|
items:
|
|
4099
|
-
|
|
4100
|
-
|
|
4101
|
-
|
|
4102
|
-
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4107
|
-
|
|
4108
|
-
|
|
4109
|
-
|
|
4110
|
-
|
|
4111
|
-
|
|
4112
|
-
|
|
4113
|
-
|
|
4114
|
-
|
|
4115
|
-
|
|
4116
|
-
|
|
4246
|
+
$ref: "#/components/schemas/PublicDepartureItem"
|
|
4247
|
+
|
|
4248
|
+
PublicDepartureItem:
|
|
4249
|
+
type: object
|
|
4250
|
+
properties:
|
|
4251
|
+
departure:
|
|
4252
|
+
$ref: "#/components/schemas/PublicDeparture"
|
|
4253
|
+
stop:
|
|
4254
|
+
$ref: "#/components/schemas/PublicDepartureStop"
|
|
4255
|
+
route:
|
|
4256
|
+
$ref: "#/components/schemas/PublicDepartureRoute"
|
|
4257
|
+
trip:
|
|
4258
|
+
$ref: "#/components/schemas/PublicDepartureTrip"
|
|
4259
|
+
vehicle:
|
|
4260
|
+
$ref: "#/components/schemas/PublicDepartureVehicle"
|
|
4261
|
+
required:
|
|
4262
|
+
- departure
|
|
4263
|
+
- stop
|
|
4264
|
+
- route
|
|
4265
|
+
- trip
|
|
4266
|
+
- vehicle
|
|
4117
4267
|
|
|
4118
4268
|
PublicDeparture:
|
|
4119
4269
|
type: object
|
|
@@ -4141,6 +4291,7 @@ components:
|
|
|
4141
4291
|
required:
|
|
4142
4292
|
- timestamp_scheduled
|
|
4143
4293
|
- timestamp_predicted
|
|
4294
|
+
- delay_seconds
|
|
4144
4295
|
- minutes
|
|
4145
4296
|
|
|
4146
4297
|
PublicDepartureStop:
|
|
@@ -4161,6 +4312,7 @@ components:
|
|
|
4161
4312
|
required:
|
|
4162
4313
|
- id
|
|
4163
4314
|
- sequence
|
|
4315
|
+
- platform_code
|
|
4164
4316
|
|
|
4165
4317
|
PublicDepartureRoute:
|
|
4166
4318
|
type: object
|
|
@@ -4192,10 +4344,11 @@ components:
|
|
|
4192
4344
|
is_canceled:
|
|
4193
4345
|
type: boolean
|
|
4194
4346
|
example: false
|
|
4195
|
-
nullable:
|
|
4347
|
+
nullable: false
|
|
4196
4348
|
required:
|
|
4197
4349
|
- id
|
|
4198
4350
|
- headsign
|
|
4351
|
+
- is_canceled
|
|
4199
4352
|
|
|
4200
4353
|
PublicDepartureVehicle:
|
|
4201
4354
|
type: object
|
|
@@ -4216,6 +4369,11 @@ components:
|
|
|
4216
4369
|
type: boolean
|
|
4217
4370
|
example: true
|
|
4218
4371
|
nullable: true
|
|
4372
|
+
required:
|
|
4373
|
+
- id
|
|
4374
|
+
- is_wheelchair_accessible
|
|
4375
|
+
- is_air_conditioned
|
|
4376
|
+
- has_charger
|
|
4219
4377
|
|
|
4220
4378
|
EventId:
|
|
4221
4379
|
type: string
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@golemio/pid",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.1-dev.3031287563",
|
|
4
4
|
"description": "Golemio PID Module",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -123,7 +123,7 @@
|
|
|
123
123
|
"@golemio/core": "^4.0.1-dev.2 || ^4.0.1"
|
|
124
124
|
},
|
|
125
125
|
"dependencies": {
|
|
126
|
-
"@golemio/ovapi-gtfs-realtime-bindings": "1.4.1",
|
|
126
|
+
"@golemio/ovapi-gtfs-realtime-bindings": "1.4.1-dev.2464451735",
|
|
127
127
|
"@turf/turf": "^6.5.0",
|
|
128
128
|
"cheap-ruler": "^3.0.2",
|
|
129
129
|
"csv-parser": "^3.0.0",
|