Skip to content

Commit e0903f7

Browse files
authored
Merge pull request #37 from commaai/remove-old-drive-apis
Remove fetchRoutes
2 parents eaae69b + f2afa0a commit e0903f7

File tree

1 file changed

+0
-125
lines changed

1 file changed

+0
-125
lines changed

src/drives.js

Lines changed: 0 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import request from './request';
22

33

4-
const SEGMENT_LENGTH = 1000 * 60;
5-
64
export function getSegmentMetadata(start, end, dongleId) {
75
return request.get(`v1/devices/${dongleId}/segments`, {
86
from: start,
@@ -51,126 +49,3 @@ export function listRoutes(dongleId, limit, createdAfter) {
5149
}
5250
return request.get(`v1/devices/${dongleId}/routes`, params);
5351
}
54-
55-
function parseSegmentMetadata(start, end, segments) {
56-
const routeStartTimes = {};
57-
58-
return segments.map((s) => {
59-
const segment = {
60-
...s,
61-
duration: Math.round(s.end_time_utc_millis - s.start_time_utc_millis),
62-
offset: Math.round(s.start_time_utc_millis) - start,
63-
};
64-
65-
if (!routeStartTimes[s.canonical_route_name]) {
66-
segment.segment = Number(s.canonical_name.split('--')[2]);
67-
routeStartTimes[s.canonical_route_name] = segment.offset - (SEGMENT_LENGTH * segment.segment);
68-
}
69-
segment.routeOffset = routeStartTimes[s.canonical_route_name];
70-
71-
return segment;
72-
});
73-
}
74-
75-
// TODO: understand this and write tests
76-
function segmentsFromMetadata(segmentsData) {
77-
function finishSegment(segment) {
78-
if (!segment.hasVideo) {
79-
return;
80-
}
81-
82-
const { videoAvailableBetweenOffsets } = segment;
83-
let lastVideoRange = videoAvailableBetweenOffsets[videoAvailableBetweenOffsets.length - 1];
84-
if (!lastVideoRange) {
85-
lastVideoRange = [segment.offset, segment.offset + segment.duration];
86-
}
87-
88-
// TODO: refactor
89-
// eslint-disable-next-line no-param-reassign
90-
segment.videoAvailableBetweenOffsets = [
91-
...videoAvailableBetweenOffsets.slice(0, videoAvailableBetweenOffsets.length - 1),
92-
[lastVideoRange[0], segment.offset + segment.duration],
93-
];
94-
}
95-
96-
let segment = null;
97-
let videoStartOffset = null;
98-
const segments = [];
99-
segmentsData.forEach((s) => {
100-
if (!s.url) {
101-
return;
102-
}
103-
if (!(s.proc_log === 40 || s.proc_qlog === 40)) {
104-
return;
105-
}
106-
const segmentHasDriverCamera = (s.proc_dcamera >= 0);
107-
const segmentHasDriverCameraStream = (s.proc_dcamera === 40);
108-
const segmentHasVideo = (s.proc_camera === 40);
109-
if (segmentHasVideo && videoStartOffset === null) {
110-
videoStartOffset = s.offset;
111-
}
112-
113-
if (!segment || segment.route !== s.canonical_route_name) {
114-
if (segment) {
115-
finishSegment(segment);
116-
}
117-
let { url } = s;
118-
const parts = url.split('/');
119-
120-
if (Number.isFinite(Number(parts.pop()))) {
121-
// url has a number at the end
122-
url = parts.join('/');
123-
}
124-
segment = {
125-
dongleId: s.dongle_id,
126-
offset: s.offset - (s.segment * SEGMENT_LENGTH),
127-
route: s.canonical_route_name,
128-
startTime: s.start_time_utc_millis,
129-
startCoord: [s.start_lng, s.start_lat],
130-
duration: 0,
131-
segments: 0,
132-
url: url.replace('chffrprivate.blob.core.windows.net', 'chffrprivate.azureedge.net'),
133-
events: [],
134-
videoAvailableBetweenOffsets: [],
135-
hasVideo: segmentHasVideo,
136-
deviceType: s.devicetype,
137-
hpgps: s.hpgps,
138-
hasDriverCamera: segmentHasDriverCamera,
139-
hasDriverCameraStream: segmentHasDriverCameraStream,
140-
locStart: '',
141-
locEnd: '',
142-
distanceMiles: 0.0,
143-
cameraStreamSegCount: 0,
144-
driverCameraStreamSegCount: 0,
145-
};
146-
segments.push(segment);
147-
}
148-
if (!segmentHasVideo && videoStartOffset !== null) {
149-
segment.videoAvailableBetweenOffsets.push([videoStartOffset, s.offset]);
150-
videoStartOffset = null;
151-
}
152-
segment.hasVideo = (segment.hasVideo || segmentHasVideo);
153-
segment.hasDriverCamera = (segment.hasDriverCamera || segmentHasDriverCamera);
154-
segment.hasDriverCameraStream = (segment.hasDriverCameraStream || segmentHasDriverCameraStream);
155-
segment.hpgps = (segment.hpgps || s.hpgps);
156-
segment.duration = (s.offset - segment.offset) + s.duration;
157-
segment.segments = Math.max(segment.segments, Number(s.canonical_name.split('--').pop()) + 1);
158-
segment.events = segment.events.concat(s.events);
159-
segment.endCoord = [s.end_lng, s.end_lat];
160-
segment.distanceMiles += s.length;
161-
segment.cameraStreamSegCount += Math.floor(segmentHasVideo);
162-
segment.driverCameraStreamSegCount += Math.floor(segmentHasDriverCameraStream);
163-
});
164-
165-
if (segment) {
166-
finishSegment(segment);
167-
}
168-
169-
return segments;
170-
}
171-
172-
export async function fetchRoutes(dongleId, start, end) {
173-
let segments = await getSegmentMetadata(start, end, dongleId);
174-
segments = parseSegmentMetadata(start, end, segments);
175-
return segmentsFromMetadata(segments).reverse();
176-
}

0 commit comments

Comments
 (0)