From 90e421b2eca28938a96ab97c927dc6dc663b44d5 Mon Sep 17 00:00:00 2001 From: Hatter Jiang Date: Sun, 19 Jan 2025 17:35:05 +0800 Subject: [PATCH] feat: update deno-github-mod.ts, add timeout --- libraries/deno-github-mod.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/libraries/deno-github-mod.ts b/libraries/deno-github-mod.ts index 6d9b4b7..c571549 100644 --- a/libraries/deno-github-mod.ts +++ b/libraries/deno-github-mod.ts @@ -30,9 +30,20 @@ export class SshKey { } } -export async function fetchKeys(username: string): Promise> { +export async function fetchKeys( + username: string, + timeout?: number, +): Promise> { const url = `https://github.com/${username}.keys`; - const response = await fetch(url, getFetchAutoProxyInit()); + const fetchTimeout = timeout || 10000; + const abortController = new AbortController(); + const timoutHandler = setTimeout(() => { + abortController.abort(`Timout ${fetchTimeout} ms`); + }, fetchTimeout); + const init = getFetchAutoProxyInit() || {}; + init.signal = abortController.signal; + const response = await fetch(url, init); const responseText = await response.text(); + clearTimeout(timoutHandler); return responseText.trim().split("\n").map((k) => SshKey.parseSshKey(k)); }