diff --git a/src/services/github.js b/src/services/github.js index a4180fa..cc33cf0 100644 --- a/src/services/github.js +++ b/src/services/github.js @@ -75,6 +75,7 @@ async function fetchWithCache(url, pat) { if (res.status === 403) throw new Error('RATE_LIMIT') if (res.status === 404) throw new Error('NOT_FOUND') + if (res.status === 204 || res.status === 202) return [] if (!res.ok) throw new Error(`HTTP_${res.status}`) const data = await res.json() @@ -92,6 +93,7 @@ export async function fetchRepos(org, repoCount, pat) { for (let page = 1; page <= maxPages; page++) { const url = `https://api.github.com/orgs/${org}/repos?per_page=100&page=${page}&sort=updated` const data = await fetchWithCache(url, pat) + if (!Array.isArray(data)) break all.push(...data) if (data.length < 100) break } @@ -104,6 +106,7 @@ export async function fetchContributors(org, repo, pat) { for(let page = 1; page<=maxPages ; page++) { const url = `https://api.github.com/repos/${org}/${repo}/contributors?per_page=100&page=${page}` const data = await fetchWithCache(url, pat) + if (!Array.isArray(data)) break all.push(...data) if(data.length < 100) break } @@ -116,6 +119,7 @@ export async function fetchIssues(org, repo, pat) { for(let page = 1; page<=maxPages ; page++) { const url = `https://api.github.com/repos/${org}/${repo}/issues?state=all&per_page=100&page=${page}` const data = await fetchWithCache(url, pat) + if (!Array.isArray(data)) break all.push(...data) if(data.length < 100) break } @@ -128,6 +132,7 @@ export async function fetchPulls(org, repo, pat) { for(let page = 1; page<=maxPages ; page++) { const url = `https://api.github.com/repos/${org}/${repo}/pulls?state=all&per_page=100&page=${page}` const data = await fetchWithCache(url, pat) + if (!Array.isArray(data)) break all.push(...data) if(data.length < 100) break }