Skip to content

Commit 61680b9

Browse files
authored
Add v3/tracking and update v3/delays, v3/route, and swagger docs (#312)
1 parent 1aa9fd4 commit 61680b9

15 files changed

Lines changed: 700 additions & 132 deletions

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ services:
1313
- /usr/src/app/node_modules
1414

1515
ghopper:
16-
image: cornellappdev/transit-ghopper:v1.2.8
16+
image: cornellappdev/transit-ghopper:v1.2.9
1717
ports:
1818
- "8988:8988"
1919

src/API.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,29 +19,31 @@ class API extends ApplicationAPI {
1919
Routers.AllStopsRouter,
2020
Routers.ApplePlacesRouter,
2121
Routers.AppleSearchRouter,
22-
Routers.DelayRouter,
23-
Routers.DelaysRouter,
2422
Routers.HelloWorldRouter,
2523
Routers.MultiRouteRouter,
2624
Routers.PlacesAutocompleteRouter,
2725
Routers.PlaceIDCoordinatesRouter,
28-
Routers.RouteSelectedRouter,
2926
Routers.SearchRouter,
30-
Routers.TrackingRouter,
3127
];
3228
return {
3329
docs: [Routers.DocsRouter],
3430
v1: [
3531
...sharedRouters,
3632
Routers.RouteRouter,
33+
Routers.DelayRouter,
34+
Routers.TrackingRouter,
3735
],
3836
v2: [
3937
...sharedRouters,
4038
Routers.RouteV2Router,
39+
Routers.DelaysV2Router,
40+
Routers.TrackingRouter,
4141
],
4242
v3: [
4343
...sharedRouters,
4444
Routers.RouteV3Router,
45+
Routers.DelaysV3Router,
46+
Routers.TrackingV3Router,
4547
],
4648
};
4749
}

src/routers/index.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,37 @@ import AllStopsRouter from './v1/AllStopsRouter';
33
import ApplePlacesRouter from './v1/ApplePlacesRouter';
44
import AppleSearchRouter from './v1/AppleSearchRouter';
55
import DelayRouter from './v1/DelayRouter';
6-
import DelaysRouter from './v2/DelaysRouter';
6+
import DelaysV2Router from './v2/DelaysRouter';
7+
import DelaysV3Router from './v3/DelaysRouter';
78
import DocsRouter from './DocsRouter';
89
import HelloWorldRouter from './v1/HelloWorldRouter';
910
import MultiRouteRouter from './v1/MultiRouteRouter';
1011
import PlacesAutocompleteRouter from './v1/PlacesAutocompleteRouter';
1112
import PlaceIDCoordinatesRouter from './v1/PlaceIDCoordinatesRouter';
1213
import RouteRouter from './v1/RouteRouter';
13-
import RouteSelectedRouter from './v1/RouteSelectedRouter';
1414
import RouteV2Router from './v2/RouteRouter';
1515
import RouteV3Router from './v3/RouteRouter';
1616
import SearchRouter from './v1/SearchRouter';
1717
import TrackingRouter from './v1/TrackingRouter';
18+
import TrackingV3Router from './v3/TrackingRouter';
1819

1920
export default {
2021
AlertsRouter,
2122
AllStopsRouter,
2223
ApplePlacesRouter,
2324
AppleSearchRouter,
2425
DelayRouter,
25-
DelaysRouter,
26+
DelaysV2Router,
27+
DelaysV3Router,
2628
DocsRouter,
2729
HelloWorldRouter,
2830
MultiRouteRouter,
2931
PlacesAutocompleteRouter,
3032
PlaceIDCoordinatesRouter,
3133
RouteRouter,
32-
RouteSelectedRouter,
3334
RouteV2Router,
3435
RouteV3Router,
3536
SearchRouter,
3637
TrackingRouter,
38+
TrackingV3Router,
3739
};

src/routers/v1/MultiRouteRouter.js

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// @flow
22
import type Request from 'express';
3-
import AnalyticsUtils from '../../utils/AnalyticsUtils';
43
import ApplicationRouter from '../../appdev/ApplicationRouter';
54
import LogUtils from '../../utils/LogUtils';
65
import RouteUtils from '../../utils/RouteUtils';
@@ -50,7 +49,6 @@ class MultiRouteRouter extends ApplicationRouter<Array<Object>> {
5049
// return the best route for each destination
5150
return Promise.all(multiRoutes).then((val) => {
5251
const bestRoutes = val.map(routes => (routes.length > 0 ? routes[0] : null));
53-
AnalyticsUtils.assignRouteIdsAndCache(bestRoutes.filter(Boolean));
5452
return bestRoutes;
5553
}).catch((err) => {
5654
throw LogUtils.logErr(err, multiRoutes, 'Could not get all specified routes');

src/routers/v1/RouteRouter.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// @flow
22
import type Request from 'express';
3-
import AnalyticsUtils from '../../utils/AnalyticsUtils';
43
import ApplicationRouter from '../../appdev/ApplicationRouter';
54
import LogUtils from '../../utils/LogUtils';
65
import RouteUtils from '../../utils/RouteUtils';
@@ -43,8 +42,6 @@ class RouteRouter extends ApplicationRouter<Array<Object>> {
4342
};
4443
LogUtils.log({ category: 'routeRequestWithTransfer', request });
4544
}
46-
AnalyticsUtils.assignRouteIdsAndCache(routes);
47-
4845
return routes;
4946
}
5047
}

src/routers/v1/RouteSelectedRouter.js

Lines changed: 0 additions & 24 deletions
This file was deleted.

src/routers/v2/RouteRouter.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// @flow
22
import type Request from 'express';
3-
import AnalyticsUtils from '../../utils/AnalyticsUtils';
43
import ApplicationRouter from '../../appdev/ApplicationRouter';
54
import LogUtils from '../../utils/LogUtils';
65
import RouteUtils from '../../utils/RouteUtils';
@@ -52,8 +51,6 @@ class RouteRouter extends ApplicationRouter<Object> {
5251
};
5352
LogUtils.log({ category: 'routeRequest', request });
5453
}
55-
AnalyticsUtils.assignRouteIdsAndCache(routes);
56-
5754
return sectionedRoutes;
5855
}
5956
}

src/routers/v3/DelaysRouter.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// @flow
2+
import ApplicationRouter from '../../appdev/ApplicationRouter';
3+
import RealtimeFeedUtils from '../../utils/RealtimeFeedUtilsV3';
4+
5+
class DelaysRouter extends ApplicationRouter<Object> {
6+
constructor() {
7+
super(['POST']);
8+
}
9+
10+
getPath(): string {
11+
return '/delays/';
12+
}
13+
14+
async content(req): Promise<any> {
15+
const rtf = await RealtimeFeedUtils.fetchRTF();
16+
const delays = req.body.data.map(async ({ stopId, tripId }) => {
17+
const res = await RealtimeFeedUtils.getDelayInformation(
18+
stopId, tripId, rtf,
19+
);
20+
return {
21+
stopId,
22+
tripId,
23+
delay: res ? res.delay : null,
24+
};
25+
});
26+
return Promise.all(delays);
27+
}
28+
}
29+
30+
export default new DelaysRouter().router;

src/routers/v3/RouteRouter.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// @flow
22
import type Request from 'express';
3-
import AnalyticsUtils from '../../utils/AnalyticsUtils';
43
import ApplicationRouter from '../../appdev/ApplicationRouter';
54
import LogUtils from '../../utils/LogUtils';
65
import RouteUtils from '../../utils/RouteUtilsV3';
@@ -45,15 +44,12 @@ class RouteRouter extends ApplicationRouter<Object> {
4544
destinationName,
4645
end: routes[0].endCoords,
4746
originName,
48-
routeId: routes[0].routeId,
4947
start: routes[0].startCoords,
5048
time,
5149
uid,
5250
};
5351
LogUtils.log({ category: 'routeRequest', request });
5452
}
55-
AnalyticsUtils.assignRouteIdsAndCache(routes);
56-
5753
return sectionedRoutes;
5854
}
5955
}

src/routers/v3/TrackingRouter.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
// @flow
2+
import ApplicationRouter from '../../appdev/ApplicationRouter';
3+
import RealtimeFeedUtils from '../../utils/RealtimeFeedUtilsV3';
4+
5+
class TrackingRouter extends ApplicationRouter<Object> {
6+
constructor() {
7+
super(['POST']);
8+
}
9+
10+
getPath(): string {
11+
return '/tracking/';
12+
}
13+
14+
// eslint-disable-next-line require-await
15+
async content(req): Promise<any> {
16+
if (!req.body || !req.body.data || !req.body.data.length || req.body.data.length === 0) {
17+
return {
18+
case: 'invalidRequest',
19+
};
20+
}
21+
22+
const { data } = req.body;
23+
return RealtimeFeedUtils.getTrackingResponse(data);
24+
}
25+
}
26+
27+
export default new TrackingRouter().router;

0 commit comments

Comments
 (0)