in app/lib/githubAPIService.ts [73:133]
static async searchUserRepositories(
token: string,
query: string,
username?: string
): Promise<GitHubRepository[]> {
try {
if (!query.trim()) {
return [];
}
const searchQuery = username ? `${query} user:${username}` : query;
const params = new URLSearchParams({
q: searchQuery,
sort: "updated",
order: "desc",
per_page: "50",
});
const response = await fetch(
`${this.GITHUB_API_BASE}/search/repositories?${params}`,
{
headers: {
Authorization: `Bearer ${token}`,
Accept: "application/vnd.github+json",
"X-GitHub-Api-Version": "2022-11-28",
},
}
);
if (!response.ok) {
console.error("Failed to search GitHub repositories:", response.status);
return [];
}
const data = await response.json();
return data.items.map((repo: any) => ({
id: repo.id,
name: repo.name,
full_name: repo.full_name,
description: repo.description,
private: repo.private,
fork: repo.fork,
clone_url: repo.clone_url,
ssh_url: repo.ssh_url,
html_url: repo.html_url,
language: repo.language,
stargazers_count: repo.stargazers_count,
updated_at: repo.updated_at,
pushed_at: repo.pushed_at,
default_branch: repo.default_branch,
owner: {
login: repo.owner.login,
avatar_url: repo.owner.avatar_url,
},
}));
} catch (error) {
console.error("Error searching GitHub repositories:", error);
return [];
}
}