MCPcopy Create free account
hub / github.com/comaps/comaps / ParseTrackArchiveData

Function ParseTrackArchiveData

tools/track_analyzing/track_archive_reader.cpp:229–262  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

227}
228
229optional<Track> ParseTrackArchiveData(string const & content, TemporaryFile & tmpArchiveFile)
230{
231 string binaryData = FromHex(content);
232 optional<string> archiveBody;
233
234 if (HasZipSignature(binaryData))
235 {
236 archiveBody = binaryData;
237 }
238 else
239 {
240 archiveBody = ParseMultipartData(binaryData);
241 if (!archiveBody)
242 {
243 LOG(LERROR, ("Bad HTTP body (expect multipart/form-data or application/zip):", content));
244 return nullopt;
245 }
246 }
247
248 tmpArchiveFile.WriteData(*archiveBody);
249
250 unzip::File zipReader = unzip::Open(tmpArchiveFile.GetFilePath().c_str());
251
252 Track trackData;
253
254 bool result = ParseTrackFile(zipReader, trackData);
255 while (result && unzip::GoToNextFile(zipReader) == unzip::Code::Ok)
256 result = ParseTrackFile(zipReader, trackData);
257
258 if (unzip::Close(zipReader) != unzip::Code::Ok)
259 LOG(LERROR, ("Unable to close temporary zip archive"));
260
261 return result ? optional<Track>(std::move(trackData)) : nullopt;
262}
263
264optional<UserTrackInfo> ParseLogRecord(string const & record, TemporaryFile & tmpArchiveFile)
265{

Callers 1

ParseLogRecordFunction · 0.85

Calls 9

FromHexFunction · 0.85
HasZipSignatureFunction · 0.85
ParseMultipartDataFunction · 0.85
OpenFunction · 0.85
ParseTrackFileFunction · 0.85
GoToNextFileFunction · 0.85
CloseFunction · 0.85
GetFilePathMethod · 0.80
WriteDataMethod · 0.45

Tested by

no test coverage detected