uapi-json 1.14.6 → 1.14.8
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "uapi-json",
|
|
3
|
-
"version": "1.14.
|
|
3
|
+
"version": "1.14.8",
|
|
4
4
|
"description": "Travelport Universal API",
|
|
5
5
|
"main": "src/",
|
|
6
6
|
"files": [
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"Artem Pylypchuk <articicejuice@gmail.com>",
|
|
33
33
|
"Yevhenii Huselietov <d46k16@gmail.com>",
|
|
34
34
|
"Mark Omarov <dev.mark.omarov@gmail.com>",
|
|
35
|
-
"Oleksii Duvanov <
|
|
35
|
+
"Oleksii Duvanov <colden.aid@gmail.com>"
|
|
36
36
|
],
|
|
37
37
|
"license": "MIT",
|
|
38
38
|
"dependencies": {
|
|
@@ -88,6 +88,7 @@ Object.assign(AirParsingError, createErrorsList({
|
|
|
88
88
|
ReservationProviderInfoMissing: 'Can\'t find provider information about reservation',
|
|
89
89
|
CancelResponseNotFound: 'Cancel response not found',
|
|
90
90
|
InvalidServiceSegmentFormat: 'Service segment format is invalid',
|
|
91
|
+
NoProviderSegmentOrder: 'Segment is missing ProviderSegmentOrder field',
|
|
91
92
|
}, AirParsingError));
|
|
92
93
|
|
|
93
94
|
// Runtime errors
|
|
@@ -2,14 +2,6 @@ const moment = require('moment');
|
|
|
2
2
|
const parsers = require('../../utils/parsers');
|
|
3
3
|
const { AirParsingError } = require('./AirErrors');
|
|
4
4
|
|
|
5
|
-
function ProviderSegmentOrderReducer(acc, { ProviderSegmentOrder }) {
|
|
6
|
-
const x = parseInt(ProviderSegmentOrder, 10);
|
|
7
|
-
if (x > acc) {
|
|
8
|
-
return x;
|
|
9
|
-
}
|
|
10
|
-
return acc;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
5
|
/**
|
|
14
6
|
* getBaggage -- get baggage information from LFS search
|
|
15
7
|
* @param baggageAllowance
|
|
@@ -446,6 +438,24 @@ function formatLowFaresSearch(searchRequest, searchResult) {
|
|
|
446
438
|
return fares;
|
|
447
439
|
}
|
|
448
440
|
|
|
441
|
+
const getSegmentsData = segmentsObject => (segmentsObject
|
|
442
|
+
? Object.values(segmentsObject)
|
|
443
|
+
: null);
|
|
444
|
+
|
|
445
|
+
const setIndexes = segments => segments.map(
|
|
446
|
+
(segment) => {
|
|
447
|
+
const { ProviderSegmentOrder: index } = segment;
|
|
448
|
+
if (index === undefined) {
|
|
449
|
+
throw new AirParsingError.NoProviderSegmentOrder({
|
|
450
|
+
segment,
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
return { ...segment, index: parseInt(index, 10) };
|
|
455
|
+
}
|
|
456
|
+
);
|
|
457
|
+
|
|
458
|
+
|
|
449
459
|
/**
|
|
450
460
|
* This function used to transform segments and service segments objects
|
|
451
461
|
* to arrays. After that this function try to set indexes with same as in
|
|
@@ -459,58 +469,20 @@ function setIndexesForSegments(
|
|
|
459
469
|
segmentsObject = null,
|
|
460
470
|
serviceSegmentsObject = null
|
|
461
471
|
) {
|
|
462
|
-
const
|
|
463
|
-
|
|
464
|
-
: null;
|
|
472
|
+
const segmentsData = getSegmentsData(segmentsObject);
|
|
473
|
+
const serviceSegmentsData = getSegmentsData(serviceSegmentsObject);
|
|
465
474
|
|
|
466
|
-
const
|
|
467
|
-
?
|
|
475
|
+
const segments = segmentsData
|
|
476
|
+
? setIndexes(segmentsData)
|
|
468
477
|
: null;
|
|
469
478
|
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
if (segments !== null && serviceSegments === null) {
|
|
475
|
-
const segmentsNew = segments.map((segment, key) => ({
|
|
476
|
-
...segment,
|
|
477
|
-
index: key + 1,
|
|
478
|
-
}));
|
|
479
|
-
return { segments: segmentsNew, serviceSegments };
|
|
480
|
-
}
|
|
481
|
-
|
|
482
|
-
if (segments === null && serviceSegments !== null) {
|
|
483
|
-
const serviceSegmentsNew = serviceSegments.map(
|
|
484
|
-
(segment, key) => ({
|
|
485
|
-
...segment,
|
|
486
|
-
index: key + 1,
|
|
487
|
-
})
|
|
488
|
-
);
|
|
489
|
-
return { segments, serviceSegments: serviceSegmentsNew };
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
const maxSegmentsSegmentOrder = segments.reduce(ProviderSegmentOrderReducer, 0);
|
|
493
|
-
const maxServiceSegmentsSegmentOrder = serviceSegments.reduce(ProviderSegmentOrderReducer, 0);
|
|
494
|
-
|
|
495
|
-
const maxOrder = Math.max(
|
|
496
|
-
maxSegmentsSegmentOrder,
|
|
497
|
-
maxServiceSegmentsSegmentOrder
|
|
498
|
-
);
|
|
499
|
-
|
|
500
|
-
const allSegments = [];
|
|
501
|
-
|
|
502
|
-
for (let i = 1; i <= maxOrder; i += 1) {
|
|
503
|
-
segments.forEach(s => (Number(s.ProviderSegmentOrder) === i ? allSegments.push(s) : null));
|
|
504
|
-
serviceSegments.forEach(s => (
|
|
505
|
-
Number(s.ProviderSegmentOrder) === i ? allSegments.push(s) : null
|
|
506
|
-
));
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
const indexedSegments = allSegments.map((s, k) => ({ ...s, index: k + 1 }));
|
|
479
|
+
const serviceSegments = serviceSegmentsData
|
|
480
|
+
? setIndexes(serviceSegmentsData)
|
|
481
|
+
: null;
|
|
510
482
|
|
|
511
483
|
return {
|
|
512
|
-
segments
|
|
513
|
-
serviceSegments
|
|
484
|
+
segments,
|
|
485
|
+
serviceSegments,
|
|
514
486
|
};
|
|
515
487
|
}
|
|
516
488
|
|