mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-13 18:32:12 +03:00
Merged via /merge-batch (lote 2026-08-26, v3.8.51). O branch original tinha divergido de um ponto bem antigo de `main` (phantom-diff — dezenas de commits já mergeados no meio); extraí os 2 commits de valor real (aceitar cookies completos/PSID/JSON exportado do Gemini Web) e reapliquei sobre o tip atual de `release/v3.8.51` (o commit adicional de 'restore endpoint page JSX' já estava coberto pelo tip, então não era necessário). Validado: 125/125 testes de `provider-validation-specialty.test.ts` passando. Obrigado pela contribuição.
27 lines
1008 B
TypeScript
27 lines
1008 B
TypeScript
type CookieRecord = Record<string, unknown>;
|
|
|
|
function cookiePairsFromJson(raw: string): string[] {
|
|
if (!raw.startsWith("{")) return [];
|
|
try {
|
|
const parsed = JSON.parse(raw) as CookieRecord;
|
|
const cookies =
|
|
parsed.cookies && typeof parsed.cookies === "object" && !Array.isArray(parsed.cookies)
|
|
? (parsed.cookies as CookieRecord)
|
|
: parsed;
|
|
return Object.entries(cookies)
|
|
.filter(([, value]) => typeof value === "string" && value.trim().length > 0)
|
|
.map(([name, value]) => `${name}=${String(value).trim()}`);
|
|
} catch {
|
|
return [];
|
|
}
|
|
}
|
|
|
|
/** Normalize a pasted Gemini cookie header, bare PSID, or browser-export JSON. */
|
|
export function normalizeGeminiCookieInput(raw: string, cookieName = "__Secure-1PSID"): string {
|
|
const trimmed = raw.trim();
|
|
if (!trimmed) return "";
|
|
const jsonPairs = cookiePairsFromJson(trimmed);
|
|
if (jsonPairs.length > 0) return jsonPairs.join("; ");
|
|
return trimmed.includes("=") ? trimmed : `${cookieName}=${trimmed}`;
|
|
}
|