Refactor JSON parsing and share URL extraction

This commit is contained in:
Kosztyk 2026-01-11 23:54:30 +02:00 committed by GitHub
parent 089bc8ed85
commit 1c8e084788
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -107,23 +107,49 @@ export async function sendFileToErugo(options: {
); );
} }
let json: any = null; const get = (obj: unknown, key: string): unknown => {
if (!obj || typeof obj !== "object") return undefined;
return (obj as Record<string, unknown>)[key];
};
const getNested = (obj: unknown, keys: string[]): unknown => {
let cur: unknown = obj;
for (const k of keys) {
cur = get(cur, k);
if (cur === undefined || cur === null) return undefined;
}
return cur;
};
let jsonObj: Record<string, unknown> = {};
try { try {
json = text ? JSON.parse(text) : null; const parsed: unknown = text ? JSON.parse(text) : null;
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
jsonObj = parsed as Record<string, unknown>;
} else {
jsonObj = { value: parsed };
}
} catch { } catch {
json = { raw: text }; jsonObj = { raw: text };
} }
return { const shareUrlCandidates: unknown[] = [
...json, getNested(jsonObj, ["share_url"]),
share_url: getNested(jsonObj, ["share_link"]),
json?.share_url || getNested(jsonObj, ["data", "url"]),
json?.share_link || getNested(jsonObj, ["data", "share", "url"]),
json?.data?.url || getNested(jsonObj, ["data", "share_url"]),
json?.data?.share?.url || getNested(jsonObj, ["data", "share_link"]),
json?.data?.share_url || ];
json?.data?.share_link ||
null, const share_url =
}; (shareUrlCandidates.find((v) => typeof v === "string") as string | undefined) ??
} null;
return {
...jsonObj,
share_url,
};