MCPcopy
hub / github.com/fastify/fastify / checkGitHubRepo

Function checkGitHubRepo

scripts/validate-ecosystem-links.js:48–96  ·  view source on GitHub ↗
(owner, repo, retries = 3)

Source from the content-addressed store, hash-verified

46}
47
48async function checkGitHubRepo (owner, repo, retries = 3) {
49 if (!isValidGitHubReference(owner, repo)) {
50 return {
51 owner,
52 repo,
53 status: 'invalid',
54 exists: false,
55 error: 'Invalid GitHub repository identifier'
56 }
57 }
58
59 const headers = {
60 'User-Agent': 'fastify-ecosystem-validator'
61 }
62
63 const githubToken = getGitHubToken()
64 if (githubToken) {
65 headers.Authorization = `token ${githubToken}`
66 }
67
68 try {
69 const response = await fetch(`https://api.github.com/repos/${encodeURIComponent(owner)}/${encodeURIComponent(repo)}`, {
70 method: 'HEAD',
71 headers
72 })
73
74 // Retry on rate limit (403) with exponential backoff
75 if (response.status === 403 && retries > 0) {
76 const delay = (4 - retries) * 2000 // 2s, 4s, 6s
77 await new Promise(resolve => setTimeout(resolve, delay))
78 return checkGitHubRepo(owner, repo, retries - 1)
79 }
80
81 return {
82 owner,
83 repo,
84 status: response.status,
85 exists: response.status === 200
86 }
87 } catch (err) {
88 return {
89 owner,
90 repo,
91 status: 'error',
92 exists: false,
93 error: err.message
94 }
95 }
96}
97
98async function validateAllLinks () {
99 console.log('Reading Ecosystem.md...\n')

Callers 2

validateAllLinksFunction · 0.85

Calls 2

isValidGitHubReferenceFunction · 0.85
getGitHubTokenFunction · 0.85

Tested by

no test coverage detected