From ec4088c76ccd6ff364f255a2fc12a49afee9c259 Mon Sep 17 00:00:00 2001 From: iHildy Date: Mon, 26 Jan 2026 19:44:07 -0600 Subject: [PATCH] chore: refactor simplify gog token extraction --- extensions/googlechat/src/gog.ts | 63 +++++++------------------------- 1 file changed, 14 insertions(+), 49 deletions(-) diff --git a/extensions/googlechat/src/gog.ts b/extensions/googlechat/src/gog.ts index 78ec07d56..a6cbd092c 100644 --- a/extensions/googlechat/src/gog.ts +++ b/extensions/googlechat/src/gog.ts @@ -3,11 +3,6 @@ import fs from "node:fs"; import os from "node:os"; import path from "node:path"; -type GogTokenEntry = { - account?: string; - refreshToken: string; -}; - const tokenCache = new Map(); function resolveWildcardJsonFile( @@ -106,20 +101,8 @@ export function resolveGogCredentialsFile(params: { return resolveGogJsonFile(params, "credentials"); } -function looksLikeRefreshToken(token: string): boolean { - const trimmed = token.trim(); - if (!trimmed) return false; - if (trimmed.startsWith("ya29.")) return false; - if (trimmed.startsWith("1//")) return true; - return trimmed.length > 30; -} - -function collectTokens(value: unknown, out: GogTokenEntry[]) { - if (!value || typeof value !== "object") return; - if (Array.isArray(value)) { - for (const entry of value) collectTokens(entry, out); - return; - } +function extractRefreshToken(value: unknown): string | null { + if (!value || typeof value !== "object") return null; const record = value as Record; const refreshToken = typeof record.refresh_token === "string" @@ -127,20 +110,11 @@ function collectTokens(value: unknown, out: GogTokenEntry[]) { : typeof record.refreshToken === "string" ? record.refreshToken : undefined; - if (refreshToken && looksLikeRefreshToken(refreshToken)) { - const account = - typeof record.email === "string" - ? record.email - : typeof record.account === "string" - ? record.account - : typeof record.user === "string" - ? record.user - : undefined; - out.push({ account, refreshToken }); - } - for (const entry of Object.values(record)) { - collectTokens(entry, out); - } + const trimmed = refreshToken?.trim(); + if (!trimmed) return null; + if (trimmed.startsWith("ya29.")) return null; + if (trimmed.startsWith("1//")) return trimmed; + return trimmed.length > 30 ? trimmed : null; } function parseTokenEmails(value: unknown): string[] { @@ -234,27 +208,18 @@ export function readGogRefreshTokenSync(params: { env, }, ); + const parsed = readJsonFile(outPath); + const token = extractRefreshToken(parsed); + if (!token) return null; + tokenCache.set(cacheKey, token); + return token; } catch { + return null; + } finally { try { fs.rmSync(tmpDir, { recursive: true, force: true }); } catch { // ignore cleanup errors } - return null; } - - const parsed = readJsonFile(outPath); - try { - fs.rmSync(tmpDir, { recursive: true, force: true }); - } catch { - // ignore cleanup errors - } - - const tokens: GogTokenEntry[] = []; - if (parsed) collectTokens(parsed, tokens); - const token = tokens[0]?.refreshToken?.trim(); - if (!token) return null; - - tokenCache.set(cacheKey, token); - return token; }