diff options
author | Hailey <me@haileyok.com> | 2024-06-26 17:24:33 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-26 17:24:33 -0700 |
commit | 878b0476dd94e187504f503438ca8914a48ac630 (patch) | |
tree | a51386f8b6f3e1e11b5b5d668f7a4f3f77b91e69 /src/lib/link-meta/resolve-short-link.ts | |
parent | da4dfeb9cf6506ade2a9619921de128458c4d0d2 (diff) | |
download | voidsky-878b0476dd94e187504f503438ca8914a48ac630.tar.zst |
Better starterpack embed (#4659)
Diffstat (limited to 'src/lib/link-meta/resolve-short-link.ts')
-rw-r--r-- | src/lib/link-meta/resolve-short-link.ts | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/lib/link-meta/resolve-short-link.ts b/src/lib/link-meta/resolve-short-link.ts new file mode 100644 index 000000000..3a3e2ab46 --- /dev/null +++ b/src/lib/link-meta/resolve-short-link.ts @@ -0,0 +1,23 @@ +import {logger} from '#/logger' +import {startUriToStarterPackUri} from 'lib/strings/starter-pack' + +export async function resolveShortLink(shortLink: string) { + const controller = new AbortController() + const to = setTimeout(() => controller.abort(), 2e3) + + try { + const res = await fetch(shortLink, { + method: 'GET', + signal: controller.signal, + }) + if (res.status !== 200) { + return shortLink + } + return startUriToStarterPackUri(res.url) + } catch (e: unknown) { + logger.error('Failed to resolve short link', {safeMessage: e}) + return null + } finally { + clearTimeout(to) + } +} |