Skip to content

Commit f936776

Browse files
Merge pull request AOSSIE-Org#89 from Ri1tik/feature/pat-full-analysis
Feature/pat full analysis
2 parents 5faf824 + 55fc6f7 commit f936776

2 files changed

Lines changed: 23 additions & 16 deletions

File tree

src/context/AppContext.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,13 @@ export function AppProvider({ children }) {
7777
setLoadMsg('Fetching repositories...')
7878
const reposPerOrg = {}
7979
await Promise.allSettled(validOrgs.map(async org => {
80-
reposPerOrg[org.login] = await fetchRepos(org.login, pat)
80+
reposPerOrg[org.login] = await fetchRepos(org.login, org.public_repos, pat)
8181
}))
8282

8383
setLoadMsg('Fetching contributor data for top repositories...')
8484
const contribsPerRepo = {}
8585
for (const org of validOrgs) {
86-
const top = (reposPerOrg[org.login] || [])
86+
const top = pat ? (reposPerOrg[org.login] || []) : (reposPerOrg[org.login] || [])
8787
.sort((a, b) => b.stargazers_count - a.stargazers_count)
8888
.slice(0, 10)
8989
await Promise.allSettled(top.map(async repo => {
@@ -114,8 +114,8 @@ export function AppProvider({ children }) {
114114
const runAudit = useCallback(async () => {
115115
if (!model || govLoading) return
116116
setGovLoading(true)
117-
const map = {}
118-
const repos = model.allRepos.slice(0, 15)
117+
const map = {}
118+
const repos = pat? model.allRepos : model.allRepos.slice(0, 15)
119119

120120
// Batches of 5 using Promise.allSettled
121121
for (let i = 0; i < repos.length; i += 5) {

src/services/github.js

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,10 @@ async function fetchWithCache(url, pat) {
8686
export const fetchOrg = (org, pat) =>
8787
fetchWithCache(`https://api.github.com/orgs/${org}`, pat)
8888

89-
export async function fetchRepos(org, pat) {
89+
export async function fetchRepos(org, repoCount, pat) {
9090
const all = []
91-
for (let page = 1; page <= 5; page++) {
91+
const maxPages = pat ? Math.ceil(repoCount / 100) : 5
92+
for (let page = 1; page <= maxPages; page++) {
9293
const url = `https://api.github.com/orgs/${org}/repos?per_page=100&page=${page}&sort=updated`
9394
const data = await fetchWithCache(url, pat)
9495
all.push(...data)
@@ -98,19 +99,25 @@ export async function fetchRepos(org, pat) {
9899
}
99100

100101
export async function fetchContributors(org, repo, pat) {
101-
try {
102-
return await fetchWithCache(
103-
`https://api.github.com/repos/${org}/${repo}/contributors?per_page=30`, pat
104-
)
105-
} catch { return [] }
102+
const all = []
103+
for(let page = 1; ; page++) {
104+
const url = `https://api.github.com/repos/${org}/${repo}/contributors?per_page=100&page=${page}`
105+
const data = await fetchWithCache(url, pat)
106+
all.push(...data)
107+
if(data.length < 100) break
108+
}
109+
return all
106110
}
107111

108112
export async function fetchIssues(org, repo, pat) {
109-
try {
110-
return await fetchWithCache(
111-
`https://api.github.com/repos/${org}/${repo}/issues?state=all&per_page=100`, pat
112-
)
113-
} catch { return [] }
113+
const all = []
114+
for(let page = 1; ; page++) {
115+
const url = `https://api.github.com/repos/${org}/${repo}/issues?state=all&per_page=100&page=${page}`
116+
const data = await fetchWithCache(url, pat)
117+
all.push(...data)
118+
if(data.length < 100) break
119+
}
120+
return all
114121
}
115122

116123
export async function fetchRateLimit(pat) {

0 commit comments

Comments
 (0)