@golemio/public-transport 0.1.0-dev.2906983689 → 0.1.0-dev.2918247179
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/db/migrations/postgresql/20261006000000-add-mpv-url-to-gtfs-feeds.js +53 -0
- package/db/migrations/postgresql/sqls/20261006000000-add-mpv-url-to-gtfs-feeds-down.sql +1 -0
- package/db/migrations/postgresql/sqls/20261006000000-add-mpv-url-to-gtfs-feeds-up.sql +3 -0
- package/dist/integration-engine/gtfs/data-access/GtfsFeedRepository.d.ts +5 -0
- package/dist/integration-engine/gtfs/data-access/GtfsFeedRepository.js +12 -0
- package/dist/integration-engine/gtfs/data-access/GtfsFeedRepository.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/ioc/Di.js +4 -0
- package/dist/integration-engine/vehicle-positions/ioc/Di.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.d.ts +2 -0
- package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.js +2 -0
- package/dist/integration-engine/vehicle-positions/ioc/VPContainerToken.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/VPWorker.js +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/VPWorker.js.map +1 -1
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/datasources/mpv/MpvXmlDataSourceFactory.d.ts +13 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/datasources/mpv/MpvXmlDataSourceFactory.js +41 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/datasources/mpv/MpvXmlDataSourceFactory.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IMpvPollInput.d.ts +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IMpvPollInput.js +3 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IMpvPollInput.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/MpvPollSchema.d.ts +4 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/MpvPollSchema.js +22 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/MpvPollSchema.js.map +1 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/MpvPollTask.d.ts +26 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/MpvPollTask.js +87 -0
- package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/MpvPollTask.js.map +1 -0
- package/docs/implementation_documentation.md +24 -0
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var dbm;
|
|
4
|
+
var type;
|
|
5
|
+
var seed;
|
|
6
|
+
var fs = require('fs');
|
|
7
|
+
var path = require('path');
|
|
8
|
+
var Promise;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* We receive the dbmigrate dependency from dbmigrate initially.
|
|
12
|
+
* This enables us to not have to rely on NODE_PATH.
|
|
13
|
+
*/
|
|
14
|
+
exports.setup = function(options, seedLink) {
|
|
15
|
+
dbm = options.dbmigrate;
|
|
16
|
+
type = dbm.dataType;
|
|
17
|
+
seed = seedLink;
|
|
18
|
+
Promise = options.Promise;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.up = function(db) {
|
|
22
|
+
var filePath = path.join(__dirname, 'sqls', '20261006000000-add-mpv-url-to-gtfs-feeds-up.sql');
|
|
23
|
+
return new Promise( function( resolve, reject ) {
|
|
24
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
25
|
+
if (err) return reject(err);
|
|
26
|
+
console.log('received data: ' + data);
|
|
27
|
+
|
|
28
|
+
resolve(data);
|
|
29
|
+
});
|
|
30
|
+
})
|
|
31
|
+
.then(function(data) {
|
|
32
|
+
return db.runSql(data);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.down = function(db) {
|
|
37
|
+
var filePath = path.join(__dirname, 'sqls', '20261006000000-add-mpv-url-to-gtfs-feeds-down.sql');
|
|
38
|
+
return new Promise( function( resolve, reject ) {
|
|
39
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
40
|
+
if (err) return reject(err);
|
|
41
|
+
console.log('received data: ' + data);
|
|
42
|
+
|
|
43
|
+
resolve(data);
|
|
44
|
+
});
|
|
45
|
+
})
|
|
46
|
+
.then(function(data) {
|
|
47
|
+
return db.runSql(data);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports._meta = {
|
|
52
|
+
"version": 1
|
|
53
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE public_transport.gtfs_feeds DROP COLUMN mpv_url;
|
|
@@ -5,6 +5,10 @@ export interface IGtfsFeedWithRtUrl {
|
|
|
5
5
|
timezone: string | null;
|
|
6
6
|
gtfsRtUrl: string;
|
|
7
7
|
}
|
|
8
|
+
export interface IGtfsFeedWithMpvUrl {
|
|
9
|
+
code: string;
|
|
10
|
+
mpvUrl: string;
|
|
11
|
+
}
|
|
8
12
|
/**
|
|
9
13
|
* Resolves feed_id values from the gtfs_feeds registry table.
|
|
10
14
|
*/
|
|
@@ -18,4 +22,5 @@ export declare class GtfsFeedRepository {
|
|
|
18
22
|
code: string;
|
|
19
23
|
}>>;
|
|
20
24
|
getFeedsWithGtfsRtUrl: () => Promise<IGtfsFeedWithRtUrl[]>;
|
|
25
|
+
getFeedsWithMpvUrl: () => Promise<IGtfsFeedWithMpvUrl[]>;
|
|
21
26
|
}
|
|
@@ -84,6 +84,18 @@ let GtfsFeedRepository = class GtfsFeedRepository {
|
|
|
84
84
|
throw new golemio_errors_1.GeneralError("Could not list gtfs_feeds rows with a configured GTFS-RT URL", this.constructor.name, err);
|
|
85
85
|
}
|
|
86
86
|
};
|
|
87
|
+
this.getFeedsWithMpvUrl = async () => {
|
|
88
|
+
try {
|
|
89
|
+
const connection = this.connector.getConnection();
|
|
90
|
+
const result = await connection.query(`SELECT code, mpv_url FROM "${const_1.PG_SCHEMA}".gtfs_feeds WHERE mpv_url IS NOT NULL;`, {
|
|
91
|
+
type: sequelize_1.default.QueryTypes.SELECT,
|
|
92
|
+
});
|
|
93
|
+
return result.map((row) => ({ code: row.code, mpvUrl: row.mpv_url }));
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
throw new golemio_errors_1.GeneralError("Could not list gtfs_feeds rows with a configured MPV URL", this.constructor.name, err);
|
|
97
|
+
}
|
|
98
|
+
};
|
|
87
99
|
}
|
|
88
100
|
};
|
|
89
101
|
exports.GtfsFeedRepository = GtfsFeedRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GtfsFeedRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/gtfs/data-access/GtfsFeedRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA,6DAAuC;AAEvC,wEAAqE;AACrE,6EAAwE;AACxE,oFAA4D;AAC5D,iEAAwE;
|
|
1
|
+
{"version":3,"file":"GtfsFeedRepository.js","sourceRoot":"","sources":["../../../../src/integration-engine/gtfs/data-access/GtfsFeedRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,8 @@ const RefreshPublicTripCacheTask_1 = require("../workers/vehicle-positions/tasks
|
|
|
50
50
|
const GtfsRtProtobufDataTypeStrategy_1 = require("../workers/vehicle-positions/datasources/gtfs-rt/GtfsRtProtobufDataTypeStrategy");
|
|
51
51
|
const DataRetentionTask_1 = require("../workers/vehicle-positions/tasks/DataRetentionTask");
|
|
52
52
|
const GtfsRtPollTask_1 = require("../workers/vehicle-positions/tasks/GtfsRtPollTask");
|
|
53
|
+
const MpvPollTask_1 = require("../workers/vehicle-positions/tasks/MpvPollTask");
|
|
54
|
+
const MpvXmlDataSourceFactory_1 = require("../workers/vehicle-positions/datasources/mpv/MpvXmlDataSourceFactory");
|
|
53
55
|
const ProcessRegionalBusPositionsTask_1 = require("../workers/vehicle-positions/tasks/ProcessRegionalBusPositionsTask");
|
|
54
56
|
const PropagateDelayTask_1 = require("../workers/vehicle-positions/tasks/PropagateDelayTask");
|
|
55
57
|
const PropagateTrainDelayTask_1 = require("../workers/vehicle-positions/tasks/PropagateTrainDelayTask");
|
|
@@ -128,6 +130,7 @@ VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.GtfsTripRegion
|
|
|
128
130
|
VPContainer.register(VPContainerToken_1.VPContainerToken.MetroShapePointsFixer, MetroShapePointsFixer_1.MetroShapePointsFixer);
|
|
129
131
|
VPContainer.register(VPContainerToken_1.VPContainerToken.MpvMessageTransformation, MpvMessageTransformation_1.MpvMessageTransformation);
|
|
130
132
|
VPContainer.register(VPContainerToken_1.VPContainerToken.GtfsRtDataSourceFactory, GtfsRtProtobufDataTypeStrategy_1.GtfsRtDataSourceFactory);
|
|
133
|
+
VPContainer.register(VPContainerToken_1.VPContainerToken.MpvXmlDataSourceFactory, MpvXmlDataSourceFactory_1.MpvXmlDataSourceFactory);
|
|
131
134
|
VPContainer.register(VPContainerToken_1.VPContainerToken.GtfsTripsModel, GtfsTripsModel_1.GtfsTripsModel);
|
|
132
135
|
VPContainer.register(VPContainerToken_1.VPContainerToken.GtfsStopTimesModel, GtfsStopTimesModel_1.GtfsStopTimesModel);
|
|
133
136
|
VPContainer.register(VPContainerToken_1.VPContainerToken.GtfsCisStopsModel, GtfsCisStopsModel_1.GtfsCisStopsModel);
|
|
@@ -159,6 +162,7 @@ VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.PropagateDelay
|
|
|
159
162
|
VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.PropagateTrainDelayTask, PropagateTrainDelayTask_1.PropagateTrainDelayTask);
|
|
160
163
|
VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.SaveDataToDBTask, SaveDataToDBTask_1.SaveDataToDBTask);
|
|
161
164
|
VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.GtfsRtPollTask, GtfsRtPollTask_1.GtfsRtPollTask);
|
|
165
|
+
VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.MpvPollTask, MpvPollTask_1.MpvPollTask);
|
|
162
166
|
VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.UpdateDelayTask, UpdateDelayTask_1.UpdateDelayTask);
|
|
163
167
|
VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.UpdateGtfsTripIdTask, UpdateGtfsTripIdTask_1.UpdateGtfsTripIdTask);
|
|
164
168
|
VPContainer.registerSingleton(VPContainerToken_1.VPContainerToken.UpdateRunsGtfsTripIdTask, UpdateRunsGtfsTripIdTask_1.UpdateRunsGtfsTripIdTask);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/ioc/Di.ts"],"names":[],"mappings":";;;AAAA,qCAA0C;AAC1C,oHAA+G;AAC/G,6HAAwH;AAExH,qHAAkH;AAClH,mHAAgH;AAChH,qHAAkH;AAClH,+EAA4E;AAC5E,mFAAgF;AAChF,iFAA8E;AAC9E,4FAAyF;AACzF,8FAA2F;AAC3F,4GAAyG;AACzG,sGAAmG;AACnG,kGAA+F;AAC/F,mGAAgG;AAChG,+GAA4G;AAC5G,iGAA8F;AAC9F,mFAAgF;AAChF,uFAAoF;AACpF,qFAAkF;AAClF,uHAAoH;AACpH,uIAAoI;AACpI,qHAAkH;AAClH,iIAA8H;AAC9H,sGAAiG;AACjG,0GAAuG;AACvG,wHAAqH;AACrH,kJAA+I;AAC/I,8FAA2F;AAC3F,wGAAqG;AACrG,sHAAmH;AACnH,8FAA2F;AAC3F,sHAAmH;AACnH,gIAA6H;AAC7H,0HAAuH;AACvH,sHAAmH;AACnH,4FAAyF;AACzF,8FAA2F;AAC3F,2HAAwH;AACxH,8HAA2H;AAC3H,4GAAyG;AACzG,iJAA8I;AAC9I,+HAA4H;AAC5H,wGAAqG;AACrG,sHAAmH;AACnH,8GAA2G;AAC3G,oIAA0H;AAC1H,4FAAyF;AACzF,sFAAmF;AACnF,wHAAqH;AACrH,8FAA2F;AAC3F,wGAAqG;AACrG,0FAAuF;AACvF,wFAAqF;AACrF,kGAA+F;AAC/F,0GAAuG;AACvG,sGAAmG;AACnG,kGAA+F;AAC/F,oHAAiH;AACjH,8DAAyD;AACzD,sEAAiE;AACjE,oEAA+D;AAC/D,wDAAwG;AACxG,2FAAwF;AACxF,kGAA6F;AAC7F,0HAAuH;AACvH,yDAAsD;AACtD,gGAA6F;AAC7F,kFAA+E;AAC/E,uEAAkE;AAClE,oFAA+E;AAC/E,kHAA6G;AAC7G,0FAAqF;AACrF,sHAAiH;AACjH,wGAAmG;AACnG,8DAAyD;AAEzD,wBAAwB;AACxB,MAAM,WAAW,GAAwB,iBAAY,CAAC,oBAAoB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Di.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/ioc/Di.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,7 @@ declare const VPContainerToken: {
|
|
|
50
50
|
ValidToCalculator: symbol;
|
|
51
51
|
MpvMessageTransformation: symbol;
|
|
52
52
|
GtfsRtDataSourceFactory: symbol;
|
|
53
|
+
MpvXmlDataSourceFactory: symbol;
|
|
53
54
|
GtfsTripsModel: symbol;
|
|
54
55
|
GtfsStopTimesModel: symbol;
|
|
55
56
|
GtfsCisStopsModel: symbol;
|
|
@@ -64,6 +65,7 @@ declare const VPContainerToken: {
|
|
|
64
65
|
PropagateTrainDelayTask: symbol;
|
|
65
66
|
SaveDataToDBTask: symbol;
|
|
66
67
|
GtfsRtPollTask: symbol;
|
|
68
|
+
MpvPollTask: symbol;
|
|
67
69
|
UpdateDelayTask: symbol;
|
|
68
70
|
UpdateGtfsTripIdTask: symbol;
|
|
69
71
|
UpdateRunsGtfsTripIdTask: symbol;
|
|
@@ -63,6 +63,7 @@ const VPContainerToken = {
|
|
|
63
63
|
ValidToCalculator: Symbol("ValidToCalculator"),
|
|
64
64
|
MpvMessageTransformation: Symbol("MpvMessageTransformation"),
|
|
65
65
|
GtfsRtDataSourceFactory: Symbol("GtfsRtDataSourceFactory"),
|
|
66
|
+
MpvXmlDataSourceFactory: Symbol("MpvXmlDataSourceFactory"),
|
|
66
67
|
//#endregion
|
|
67
68
|
//#region ExternalModels
|
|
68
69
|
GtfsTripsModel: Symbol("GtfsTripsModel"),
|
|
@@ -81,6 +82,7 @@ const VPContainerToken = {
|
|
|
81
82
|
PropagateTrainDelayTask: Symbol("PropagateTrainDelayTask"),
|
|
82
83
|
SaveDataToDBTask: Symbol("SaveDataToDBTask"),
|
|
83
84
|
GtfsRtPollTask: Symbol("GtfsRtPollTask"),
|
|
85
|
+
MpvPollTask: Symbol("MpvPollTask"),
|
|
84
86
|
UpdateDelayTask: Symbol("UpdateDelayTask"),
|
|
85
87
|
UpdateGtfsTripIdTask: Symbol("UpdateGtfsTripIdTask"),
|
|
86
88
|
UpdateRunsGtfsTripIdTask: Symbol("UpdateRunsGtfsTripIdTask"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VPContainerToken.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/ioc/VPContainerToken.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB,GAAG;IACrB,2BAA2B;IAC3B,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,6BAA6B,EAAE,MAAM,CAAC,+BAA+B,CAAC;IACtE,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,qBAAqB,EAAE,MAAM,CAAC,uBAAuB,CAAC;IACtD,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,8BAA8B,EAAE,MAAM,CAAC,gCAAgC,CAAC;IACxE,uBAAuB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IAC1D,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC5C,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,YAAY;IAEZ,cAAc;IACd,6BAA6B,EAAE,MAAM,CAAC,+BAA+B,CAAC;IACtE,8BAA8B,EAAE,MAAM,CAAC,gCAAgC,CAAC;IACxE,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,qCAAqC,EAAE,MAAM,CAAC,uCAAuC,CAAC;IACtF,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC5C,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAClD,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC5C,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,qBAAqB,EAAE,MAAM,CAAC,uBAAuB,CAAC;IACtD,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAClD,qBAAqB,EAAE,MAAM,CAAC,uBAAuB,CAAC;IACtD,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,iCAAiC,EAAE,MAAM,CAAC,mCAAmC,CAAC;IAC9E,+BAA+B,EAAE,MAAM,CAAC,iCAAiC,CAAC;IAC1E,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,wCAAwC,EAAE,MAAM,CAAC,0CAA0C,CAAC;IAC5F,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,CAAC;IAExD,YAAY;IAEZ,6BAA6B;IAC7B,gCAAgC,EAAE,MAAM,CAAC,kCAAkC,CAAC;IAC5E,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC5C,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,CAAC;IACxD,YAAY;IAEZ,kBAAkB;IAElB,oBAAoB;IACpB,2BAA2B,EAAE,MAAM,CAAC,6BAA6B,CAAC;IAClE,0BAA0B,EAAE,MAAM,CAAC,4BAA4B,CAAC;IAChE,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAClD,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,YAAY;IAEZ,iBAAiB;IACjB,6BAA6B,EAAE,MAAM,CAAC,+BAA+B,CAAC;IACtE,qBAAqB,EAAE,MAAM,CAAC,uBAAuB,CAAC;IACtD,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,uBAAuB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IAC1D,YAAY;IAEZ,wBAAwB;IACxB,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,+BAA+B,EAAE,MAAM,CAAC,iCAAiC,CAAC;IAC1E,yBAAyB,EAAE,MAAM,CAAC,2BAA2B,CAAC;IAC9D,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,uBAAuB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IAC1D,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,CAAC;IAClD,YAAY;IAEZ,eAAe;IACf,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,+BAA+B,EAAE,MAAM,CAAC,iCAAiC,CAAC;IAC1E,kBAAkB,EAAE,MAAM,CAAC,oBAAoB,CAAC;IAChD,uBAAuB,EAAE,MAAM,CAAC,yBAAyB,CAAC;IAC1D,gBAAgB,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC5C,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;IACxC,eAAe,EAAE,MAAM,CAAC,iBAAiB,CAAC;IAC1C,oBAAoB,EAAE,MAAM,CAAC,sBAAsB,CAAC;IACpD,wBAAwB,EAAE,MAAM,CAAC,0BAA0B,CAAC;IAC5D,YAAY;IAEZ,YAAY;IAEZ,iBAAiB;IACjB,qBAAqB,EAAE,MAAM,CAAC,uBAAuB,CAAC;IACtD,iBAAiB,EAAE,MAAM,CAAC,mBAAmB,CAAC;IAC9C,YAAY;IAEZ,oDAAoD;IACpD,sBAAsB,EAAE,MAAM,CAAC,wBAAwB,CAAC;IACxD,YAAY;CACf,CAAC;AAEO,4CAAgB"}
|
|
1
|
+
{"version":3,"file":"VPContainerToken.js","sourceRoot":"","sources":["../../../../src/integration-engine/vehicle-positions/ioc/VPContainerToken.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ class VPWorker extends workers_1.AbstractWorker {
|
|
|
19
19
|
this.registerTask(Di_1.VPContainer.resolve(VPContainerToken_1.VPContainerToken.RefreshGtfsTripDataTask));
|
|
20
20
|
this.registerTask(Di_1.VPContainer.resolve(VPContainerToken_1.VPContainerToken.SaveDataToDBTask));
|
|
21
21
|
this.registerTask(Di_1.VPContainer.resolve(VPContainerToken_1.VPContainerToken.GtfsRtPollTask));
|
|
22
|
+
this.registerTask(Di_1.VPContainer.resolve(VPContainerToken_1.VPContainerToken.MpvPollTask));
|
|
22
23
|
this.registerTask(Di_1.VPContainer.resolve(VPContainerToken_1.VPContainerToken.UpdateGtfsTripIdTask));
|
|
23
24
|
this.registerTask(Di_1.VPContainer.resolve(VPContainerToken_1.VPContainerToken.UpdateRunsGtfsTripIdTask));
|
|
24
25
|
this.registerTask(Di_1.VPContainer.resolve(VPContainerToken_1.VPContainerToken.UpdateDelayTask));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VPWorker.js","sourceRoot":"","sources":["../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/VPWorker.ts"],"names":[],"mappings":";;;AAAA,qCAA2D;AAC3D,iEAA8E;AAC9E,2EAA6F;AAC7F,2CAA0C;
|
|
1
|
+
{"version":3,"file":"VPWorker.js","sourceRoot":"","sources":["../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/VPWorker.ts"],"names":[],"mappings":";;;AAAA,qCAA2D;AAC3D,iEAA8E;AAC9E,2EAA6F;AAC7F,2CAA0C;AAe1C,MAAa,QAAS,SAAQ,wBAAc;IAGxC;QACI,KAAK,EAAE,CAAC;QAHF,SAAI,GAAG,uBAAW,CAAC;QAqBtB,iBAAY,GAAG,CAAC,IAAuB,EAAQ,EAAE;YACpD,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC7C,CAAC,CAAC;QAnBE,iBAAiB;QACjB,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAA6B,mCAAgB,CAAC,0BAA0B,CAAC,CAAC,CAAC;QAChH,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAAiC,mCAAgB,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACxH,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAA0B,mCAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAAmB,mCAAgB,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5F,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAAiB,mCAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAAc,mCAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAAuB,mCAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAA2B,mCAAgB,CAAC,wBAAwB,CAAC,CAAC,CAAC;QAC5G,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAAkB,mCAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAAkC,mCAAgB,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAC1H,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAAqB,mCAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAA0B,mCAAgB,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,YAAY,CAAC,gBAAW,CAAC,OAAO,CAAoB,mCAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAClG,CAAC;CAMJ;AA1BD,4BA0BC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { IMpvMessageInput } from "../../../../../../schema-definitions/vehicle-positions/interfaces/IMpvMessageInterfaces";
|
|
2
|
+
import { IDataSource } from "@golemio/core/dist/integration-engine";
|
|
3
|
+
/**
|
|
4
|
+
* Constructs a DataSource per feed at task-execution time for a polled MPV XML endpoint. The URL is a
|
|
5
|
+
* gtfs_feeds row value, so (like GtfsRtDataSourceFactory) it cannot be built once and registered in DI.
|
|
6
|
+
* Default xml2js options yield the same `{ m: { spoj: [{ $, zast: [{ $ }] }] } }` shape the input
|
|
7
|
+
* gateway produces for pushed MPV XML, so the result can go straight to saveDataToDB -- and it is
|
|
8
|
+
* validated with the same JSON schema the input gateway uses for pushed MPV XML.
|
|
9
|
+
*/
|
|
10
|
+
export declare class MpvXmlDataSourceFactory {
|
|
11
|
+
private readonly validator;
|
|
12
|
+
create(url: string): IDataSource<IMpvMessageInput>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MpvXmlDataSourceFactory = void 0;
|
|
10
|
+
const vehicle_positions_1 = require("../../../../../../schema-definitions/vehicle-positions");
|
|
11
|
+
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
12
|
+
const XMLDataTypeStrategy_1 = require("@golemio/core/dist/integration-engine/datasources/datatype-strategy/XMLDataTypeStrategy");
|
|
13
|
+
const HTTPFetchProtocolStrategy_1 = require("@golemio/core/dist/integration-engine/datasources/protocol-strategy/HTTPFetchProtocolStrategy");
|
|
14
|
+
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
15
|
+
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
16
|
+
/**
|
|
17
|
+
* Constructs a DataSource per feed at task-execution time for a polled MPV XML endpoint. The URL is a
|
|
18
|
+
* gtfs_feeds row value, so (like GtfsRtDataSourceFactory) it cannot be built once and registered in DI.
|
|
19
|
+
* Default xml2js options yield the same `{ m: { spoj: [{ $, zast: [{ $ }] }] } }` shape the input
|
|
20
|
+
* gateway produces for pushed MPV XML, so the result can go straight to saveDataToDB -- and it is
|
|
21
|
+
* validated with the same JSON schema the input gateway uses for pushed MPV XML.
|
|
22
|
+
*/
|
|
23
|
+
let MpvXmlDataSourceFactory = class MpvXmlDataSourceFactory {
|
|
24
|
+
constructor() {
|
|
25
|
+
this.validator = new golemio_validator_1.JSONSchemaValidator("MpvPollDataSource", vehicle_positions_1.VehiclePositions.datasourceJsonSchema);
|
|
26
|
+
}
|
|
27
|
+
create(url) {
|
|
28
|
+
return new integration_engine_1.DataSource("MpvPollDataSource", new HTTPFetchProtocolStrategy_1.HTTPFetchProtocolStrategy({
|
|
29
|
+
method: "GET",
|
|
30
|
+
url,
|
|
31
|
+
responseType: "text",
|
|
32
|
+
// the source answers in well under a second; fail before the next 5 s poll fires
|
|
33
|
+
timeoutInSeconds: 4,
|
|
34
|
+
}), new XMLDataTypeStrategy_1.XMLDataTypeStrategy({ resultsPath: "", xml2jsParams: {} }), this.validator);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
exports.MpvXmlDataSourceFactory = MpvXmlDataSourceFactory;
|
|
38
|
+
exports.MpvXmlDataSourceFactory = MpvXmlDataSourceFactory = __decorate([
|
|
39
|
+
(0, tsyringe_1.injectable)()
|
|
40
|
+
], MpvXmlDataSourceFactory);
|
|
41
|
+
//# sourceMappingURL=MpvXmlDataSourceFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MpvXmlDataSourceFactory.js","sourceRoot":"","sources":["../../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/datasources/mpv/MpvXmlDataSourceFactory.ts"],"names":[],"mappings":";;;;;;;;;AAAA,8FAA0D;AAE1D,8EAAgF;AAChF,iIAA8H;AAC9H,6IAA0I;AAC1I,mFAAkF;AAClF,iEAAgE;AAEhE;;;;;;GAMG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAA7B;QACc,cAAS,GAAG,IAAI,uCAAmB,CAAC,mBAAmB,EAAE,oCAAgB,CAAC,oBAAoB,CAAC,CAAC;IAgBrH,CAAC;IAdU,MAAM,CAAC,GAAW;QACrB,OAAO,IAAI,+BAAU,CACjB,mBAAmB,EACnB,IAAI,qDAAyB,CAAC;YAC1B,MAAM,EAAE,KAAK;YACb,GAAG;YACH,YAAY,EAAE,MAAM;YACpB,iFAAiF;YACjF,gBAAgB,EAAE,CAAC;SACtB,CAAC,EACF,IAAI,yCAAmB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,EAC9D,IAAI,CAAC,SAAS,CACjB,CAAC;IACN,CAAC;CACJ,CAAA;AAjBY,0DAAuB;kCAAvB,uBAAuB;IADnC,IAAA,qBAAU,GAAE;GACA,uBAAuB,CAiBnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IMpvPollInput.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/interfaces/IMpvPollInput.ts"],"names":[],"mappings":""}
|
package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/schema/MpvPollSchema.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MpvPollValidation = void 0;
|
|
13
|
+
const class_validator_1 = require("@golemio/core/dist/shared/class-validator");
|
|
14
|
+
class MpvPollValidation {
|
|
15
|
+
}
|
|
16
|
+
exports.MpvPollValidation = MpvPollValidation;
|
|
17
|
+
__decorate([
|
|
18
|
+
(0, class_validator_1.IsOptional)(),
|
|
19
|
+
(0, class_validator_1.IsString)(),
|
|
20
|
+
__metadata("design:type", String)
|
|
21
|
+
], MpvPollValidation.prototype, "feedCode", void 0);
|
|
22
|
+
//# sourceMappingURL=MpvPollSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MpvPollSchema.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/schema/MpvPollSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+EAAiF;AAGjF,MAAa,iBAAiB;CAI7B;AAJD,8CAIC;AADG;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mDACO"}
|
package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/MpvPollTask.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { GtfsFeedRepository } from "../../../../gtfs/data-access/GtfsFeedRepository";
|
|
2
|
+
import { ILogger } from "@golemio/core/dist/helpers";
|
|
3
|
+
import { AbstractTask } from "@golemio/core/dist/integration-engine/workers";
|
|
4
|
+
import { MpvXmlDataSourceFactory } from "../datasources/mpv/MpvXmlDataSourceFactory";
|
|
5
|
+
import { IMpvPollInput } from "../interfaces/IMpvPollInput";
|
|
6
|
+
import { MpvPollValidation } from "../schema/MpvPollSchema";
|
|
7
|
+
/**
|
|
8
|
+
* Polls each feed's own MPV XML endpoint (gtfs_feeds.mpv_url) and hands the parsed positions to
|
|
9
|
+
* saveDataToDB under the feed's code -- the pull counterpart of the input gateway's MPV push endpoint,
|
|
10
|
+
* so everything downstream (GTFS trip matching, delay computation) is the same pipeline.
|
|
11
|
+
*/
|
|
12
|
+
export declare class MpvPollTask extends AbstractTask<IMpvPollInput> {
|
|
13
|
+
private readonly feedRepository;
|
|
14
|
+
private readonly dataSourceFactory;
|
|
15
|
+
private readonly logger;
|
|
16
|
+
readonly queueName = "pollMpvPositions";
|
|
17
|
+
readonly queueTtl: number;
|
|
18
|
+
readonly schema: typeof MpvPollValidation;
|
|
19
|
+
constructor(feedRepository: GtfsFeedRepository, dataSourceFactory: MpvXmlDataSourceFactory, logger: ILogger);
|
|
20
|
+
protected execute(data: IMpvPollInput): Promise<void>;
|
|
21
|
+
private pollFeed;
|
|
22
|
+
/**
|
|
23
|
+
* An MPV message without any trip parses to `{ m: "" }` or `{ m: { $ } }` (no `spoj` key).
|
|
24
|
+
*/
|
|
25
|
+
private getPositions;
|
|
26
|
+
}
|
package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/MpvPollTask.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
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;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.MpvPollTask = void 0;
|
|
16
|
+
const ModuleContainerToken_1 = require("../../../../ioc/ModuleContainerToken");
|
|
17
|
+
const VPContainerToken_1 = require("../../../ioc/VPContainerToken");
|
|
18
|
+
const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
|
|
19
|
+
const queueprocessors_1 = require("@golemio/core/dist/integration-engine/queueprocessors");
|
|
20
|
+
const workers_1 = require("@golemio/core/dist/integration-engine/workers");
|
|
21
|
+
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
22
|
+
const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
|
|
23
|
+
const constants_1 = require("../constants");
|
|
24
|
+
const MpvXmlDataSourceFactory_1 = require("../datasources/mpv/MpvXmlDataSourceFactory");
|
|
25
|
+
const MpvPollSchema_1 = require("../schema/MpvPollSchema");
|
|
26
|
+
// same default batch size as the input gateway's MPV push endpoint
|
|
27
|
+
const SAVE_DATA_BATCH_SIZE = 500;
|
|
28
|
+
/**
|
|
29
|
+
* Polls each feed's own MPV XML endpoint (gtfs_feeds.mpv_url) and hands the parsed positions to
|
|
30
|
+
* saveDataToDB under the feed's code -- the pull counterpart of the input gateway's MPV push endpoint,
|
|
31
|
+
* so everything downstream (GTFS trip matching, delay computation) is the same pipeline.
|
|
32
|
+
*/
|
|
33
|
+
let MpvPollTask = class MpvPollTask extends workers_1.AbstractTask {
|
|
34
|
+
constructor(feedRepository, dataSourceFactory, logger) {
|
|
35
|
+
super(constants_1.WORKER_NAME);
|
|
36
|
+
this.feedRepository = feedRepository;
|
|
37
|
+
this.dataSourceFactory = dataSourceFactory;
|
|
38
|
+
this.logger = logger;
|
|
39
|
+
this.queueName = "pollMpvPositions";
|
|
40
|
+
this.queueTtl = 15 * 1000; // 15 seconds, newer polls are already queued behind an older message
|
|
41
|
+
this.schema = MpvPollSchema_1.MpvPollValidation;
|
|
42
|
+
}
|
|
43
|
+
async execute(data) {
|
|
44
|
+
const feeds = await this.feedRepository.getFeedsWithMpvUrl();
|
|
45
|
+
const feedsToPoll = data.feedCode ? feeds.filter((feed) => feed.code === data.feedCode) : feeds;
|
|
46
|
+
for (const feed of feedsToPoll) {
|
|
47
|
+
await this.pollFeed(feed);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async pollFeed(feed) {
|
|
51
|
+
try {
|
|
52
|
+
const message = await this.dataSourceFactory.create(feed.mpvUrl).getAll();
|
|
53
|
+
const positions = this.getPositions(message);
|
|
54
|
+
for (let i = 0; i < positions.length; i += SAVE_DATA_BATCH_SIZE) {
|
|
55
|
+
const batch = {
|
|
56
|
+
m: { spoj: positions.slice(i, i + SAVE_DATA_BATCH_SIZE) },
|
|
57
|
+
feedCode: feed.code,
|
|
58
|
+
};
|
|
59
|
+
await queueprocessors_1.QueueManager.sendMessageToExchange(this.queuePrefix, "saveDataToDB", batch, {
|
|
60
|
+
timestamp: Date.now(),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
this.logger.error(new golemio_errors_1.GeneralError(`Failed to poll MPV feed for "${feed.code}".`, this.constructor.name, err));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* An MPV message without any trip parses to `{ m: "" }` or `{ m: { $ } }` (no `spoj` key).
|
|
70
|
+
*/
|
|
71
|
+
getPositions(message) {
|
|
72
|
+
const spoj = typeof message?.m === "object" ? message.m.spoj : undefined;
|
|
73
|
+
if (!spoj) {
|
|
74
|
+
return [];
|
|
75
|
+
}
|
|
76
|
+
return Array.isArray(spoj) ? spoj : [spoj];
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
exports.MpvPollTask = MpvPollTask;
|
|
80
|
+
exports.MpvPollTask = MpvPollTask = __decorate([
|
|
81
|
+
(0, tsyringe_1.injectable)(),
|
|
82
|
+
__param(0, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.GtfsFeedRepository)),
|
|
83
|
+
__param(1, (0, tsyringe_1.inject)(VPContainerToken_1.VPContainerToken.MpvXmlDataSourceFactory)),
|
|
84
|
+
__param(2, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.Logger)),
|
|
85
|
+
__metadata("design:paramtypes", [Function, MpvXmlDataSourceFactory_1.MpvXmlDataSourceFactory, Object])
|
|
86
|
+
], MpvPollTask);
|
|
87
|
+
//# sourceMappingURL=MpvPollTask.js.map
|
package/dist/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/MpvPollTask.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MpvPollTask.js","sourceRoot":"","sources":["../../../../../../src/integration-engine/vehicle-positions/workers/vehicle-positions/tasks/MpvPollTask.ts"],"names":[],"mappings":"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"}
|
|
@@ -870,6 +870,30 @@ delay propagation a ostatní CIS obohacení zůstávají pro takto napárované
|
|
|
870
870
|
- VPTripsModel `vehiclepositions_trips`
|
|
871
871
|
- VPPositionsModel `vehiclepositions_positions`
|
|
872
872
|
|
|
873
|
+
#### _task: MpvPollTask_
|
|
874
|
+
|
|
875
|
+
Pull protějšek k MPV push endpointu input gateway (`POST /v1/public-transport/vehicle-positions/{feedCode}`):
|
|
876
|
+
pro feedy, které MPV XML neposílají, ale vystavují ho na URL (např. POVED – IDPK Plzeňský kraj), stáhne
|
|
877
|
+
XML z `gtfs_feeds.mpv_url`, rozparsuje ho do stejného tvaru jako input gateway a pošle ho po dávkách
|
|
878
|
+
do `saveDataToDB` s kódem feedu. Celé další zpracování (párování na GTFS, výpočet zpoždění) je stejné
|
|
879
|
+
jako u pushovaných MPV dat. Feedy bez nastavené `mpv_url` se přeskakují.
|
|
880
|
+
|
|
881
|
+
- vstupní rabbitmq fronta
|
|
882
|
+
- název: vehicle-positions.vehiclepositions.pollMpvPositions
|
|
883
|
+
- TTL: 15 sekund
|
|
884
|
+
- parametry: `{ feedCode? }`
|
|
885
|
+
- `feedCode` - volitelný kód feedu (omezí polling na jeden konkrétní feed); bez něj se stáhnou všechny feedy s nastavenou `mpv_url`
|
|
886
|
+
- validační schéma: [MpvPollSchema](../src/integration-engine/vehicle-positions/workers/vehicle-positions/schema/MpvPollSchema.ts)
|
|
887
|
+
- frekvence stahování: externí cron `*/5 * * * * *` (zdroj POVED se obnovuje cca každých 5 s; timeout stažení 4 s)
|
|
888
|
+
- závislé fronty (do kterých jsou odesílány zprávy z metody workeru)
|
|
889
|
+
- vehicle-positions.vehiclepositions.saveDataToDB
|
|
890
|
+
- datové zdroje
|
|
891
|
+
- MPV XML přes HTTP GET (URL z `gtfs_feeds.mpv_url`)
|
|
892
|
+
- transformace
|
|
893
|
+
- žádné (transformace proběhne v `saveDataToDB`)
|
|
894
|
+
- data modely
|
|
895
|
+
- žádné (čte jen `gtfs_feeds`)
|
|
896
|
+
|
|
873
897
|
#### _task: RefreshGtfsTripDataTask_
|
|
874
898
|
|
|
875
899
|
- vstupní rabbitmq fronta
|