mirror of
https://github.com/linkwarden/linkwarden.git
synced 2026-06-28 14:55:49 +00:00
43 lines
928 B
TypeScript
43 lines
928 B
TypeScript
import { ArchivedFormat } from "@linkwarden/types/global";
|
|
|
|
export default async function getPreservedFormatUrl({
|
|
tokenEndpoint,
|
|
linkId,
|
|
format,
|
|
download = false,
|
|
headers,
|
|
requestInit,
|
|
}: {
|
|
tokenEndpoint: string;
|
|
linkId: number;
|
|
format: ArchivedFormat;
|
|
download?: boolean;
|
|
headers?: HeadersInit;
|
|
requestInit?: RequestInit;
|
|
}) {
|
|
const response = await fetch(
|
|
`${tokenEndpoint}?linkId=${linkId}&format=${format}`,
|
|
{
|
|
...requestInit,
|
|
headers,
|
|
}
|
|
);
|
|
|
|
const data = await response.json().catch(() => null);
|
|
if (!response.ok) {
|
|
throw new Error(data?.response || "Failed to load archived format.");
|
|
}
|
|
|
|
if (typeof data?.response?.url !== "string") {
|
|
throw new Error("Failed to load archived format.");
|
|
}
|
|
|
|
if (!download) {
|
|
return data.response.url;
|
|
}
|
|
|
|
const url = new URL(data.response.url);
|
|
url.searchParams.set("download", "1");
|
|
return url.toString();
|
|
}
|