From a6dfa77645186255266b596adb3100742769e387 Mon Sep 17 00:00:00 2001 From: TZGyn Date: Sat, 3 Aug 2024 07:50:45 +0800 Subject: [PATCH] update url metadata api to timeout after 5 seconds --- .../src/routes/api/url/metadata/+server.ts | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/frontend/src/routes/api/url/metadata/+server.ts b/frontend/src/routes/api/url/metadata/+server.ts index e2debb0..a3058e6 100644 --- a/frontend/src/routes/api/url/metadata/+server.ts +++ b/frontend/src/routes/api/url/metadata/+server.ts @@ -17,11 +17,30 @@ export const GET: RequestHandler = async (event) => { } // taken from https://github.com/dubinc/dub/blob/main/apps/web/app/api/edge/metatags/utils.ts try { - const response = await fetch(url, { - headers: { - 'User-Agent': 'shortener-bot', + const response = await new Promise( + (resolve, reject) => { + const controller = new AbortController() + const timeoutId = setTimeout(() => { + controller.abort() + reject(new Error('Request timed out')) + }, 5000) + fetch(url, { + headers: { + 'User-Agent': 'Kon.sh-bot', + }, + signal: controller.signal, + }) + .then((response) => { + clearTimeout(timeoutId) + resolve(response) + }) + .catch((error) => { + clearTimeout(timeoutId) + reject(error) + }) }, - }) + ) + if (!response) { return new Response( JSON.stringify({