From 933cf7f1964c559248c7f3f14263bdd023be530f Mon Sep 17 00:00:00 2001 From: regeter <2320305+regeter@users.noreply.github.com> Date: Wed, 27 Nov 2024 18:17:31 -0800 Subject: [PATCH] refactor: Removing extra nesting, plus better code for solutiontype that works with both Cloud Logging and Bigquery. --- src/localStorage.js | 102 +++++++++++++++++++------------------------- 1 file changed, 45 insertions(+), 57 deletions(-) diff --git a/src/localStorage.js b/src/localStorage.js index 304a688..9d4f5cb 100644 --- a/src/localStorage.js +++ b/src/localStorage.js @@ -76,7 +76,7 @@ async function processJsonFile(file) { }); } -function parseJsonContent(content) { +export function parseJsonContent(content) { console.log("Parsing JSON content"); try { return JSON.parse(content); @@ -91,7 +91,7 @@ function parseJsonContent(content) { } } -function removeEmptyObjects(obj) { +export function removeEmptyObjects(obj) { Object.keys(obj).forEach((key) => { if (obj[key] && typeof obj[key] === "object") { if (Object.keys(obj[key]).length === 0) { @@ -108,70 +108,58 @@ function isRestrictedLog(log) { return log.jsonPayload?.["@type"]?.includes("Restricted") || false; } -function ensureCorrectFormat(data) { +export function ensureCorrectFormat(data) { if (data && Array.isArray(data.rawLogs)) { return { ...data, APIKEY: data.APIKEY || DEFAULT_API_KEY, }; - } else { - const logsArray = Array.isArray(data) ? data : [data]; - - const restrictedLogsMap = new Map(); - logsArray.forEach((log) => { - if (isRestrictedLog(log)) { - removeEmptyObjects(log.jsonPayload); - restrictedLogsMap.set(log.jsonPayload.parentInsertId, log); - } - }); + } + const logsArray = Array.isArray(data) ? data : [data]; - // Filter out restricted logs while merging their TOS-restricted attributes into their parent logs. - const mergedLogs = logsArray.filter((log) => { - if (isRestrictedLog(log)) { - return false; - } - const restrictedLog = restrictedLogsMap.get(log.insertId)?.jsonPayload; - if (restrictedLog) { - ["request", "response"].forEach((section) => { - if (restrictedLog[section] && log.jsonPayload[section]) { - TOS_RESTRICTED_ATTRIBUTES.forEach((attr) => { - if (restrictedLog[section][attr] !== undefined) { - log.jsonPayload[section][attr] = restrictedLog[section][attr]; - } - }); - } - }); - } - return true; - }); - - // Determine the solution type based on the resource type of the first log entry - const firstLog = mergedLogs[0]; - const resourceType = firstLog?.resource?.type; - let solutionType; - - if (resourceType === "fleetengine.googleapis.com/DeliveryFleet") { - solutionType = "LMFS"; - } else if (resourceType === "fleetengine.googleapis.com/Fleet") { - solutionType = "ODRD"; - } else { - console.warn( - `Unknown resource type: ${resourceType}, defaulting to ODRD` - ); - solutionType = "ODRD"; + const restrictedLogsMap = new Map(); + logsArray.forEach((log) => { + if (isRestrictedLog(log)) { + removeEmptyObjects(log.jsonPayload); + restrictedLogsMap.set(log.jsonPayload.parentInsertId, log); } + }); - console.log(`Determined solution type: ${solutionType}`); + // Filter out restricted logs while merging their TOS-restricted attributes into their parent logs. + const mergedLogs = logsArray.filter((log) => { + if (isRestrictedLog(log)) { + return false; + } + const restrictedLog = restrictedLogsMap.get(log.insertId)?.jsonPayload; + if (restrictedLog) { + ["request", "response"].forEach((section) => { + if (restrictedLog[section] && log.jsonPayload[section]) { + TOS_RESTRICTED_ATTRIBUTES.forEach((attr) => { + if (restrictedLog[section][attr] !== undefined) { + log.jsonPayload[section][attr] = restrictedLog[section][attr]; + } + }); + } + }); + } + return true; + }); - return { - APIKEY: DEFAULT_API_KEY, - vehicle: "", - projectId: "", - logSource: "Direct Cloud Logging", - solutionType: solutionType, - rawLogs: mergedLogs, - }; - } + // Determine the solution type based on the presence of _delivery_vehicle logs + const isLMFS = mergedLogs.some((log) => + log.logName?.includes("_delivery_vehicle") + ); + const solutionType = isLMFS ? "LMFS" : "ODRD"; + console.log(`Determined solution type: ${solutionType}`); + + return { + APIKEY: DEFAULT_API_KEY, + vehicle: "", + projectId: "", + logSource: "Direct Cloud Logging", + solutionType: solutionType, + rawLogs: mergedLogs, + }; } async function saveToIndexedDB(data, index) {