Spaces:
Runtime error
Runtime error
| import { NextResponse } from 'next/server'; | |
| export async function GET(req: Request) { | |
| const { searchParams } = new URL(req.url); | |
| const username = searchParams.get('user'); | |
| if (!username) return NextResponse.json({ error: 'Missing username parameter' }, { status: 400 }); | |
| try { | |
| const [userRes, reposRes] = await Promise.all([ | |
| fetch(`https://api.github.com/users/${encodeURIComponent(username)}`, { headers: { 'User-Agent': 'OSIRIS-Recon' } }), | |
| fetch(`https://api.github.com/users/${encodeURIComponent(username)}/repos?sort=updated&per_page=5`, { headers: { 'User-Agent': 'OSIRIS-Recon' } }) | |
| ]); | |
| if (userRes.status === 404) return NextResponse.json({ error: 'User not found' }, { status: 404 }); | |
| if (!userRes.ok) throw new Error(`GitHub API HTTP ${userRes.status}`); | |
| const userData = await userRes.json(); | |
| const reposData = reposRes.ok ? await reposRes.json() : []; | |
| return NextResponse.json({ | |
| username: userData.login, | |
| name: userData.name, | |
| company: userData.company, | |
| blog: userData.blog, | |
| location: userData.location, | |
| email: userData.email, | |
| bio: userData.bio, | |
| twitter: userData.twitter_username, | |
| public_repos: userData.public_repos, | |
| followers: userData.followers, | |
| created_at: userData.created_at, | |
| avatar_url: userData.avatar_url, | |
| recent_repos: Array.isArray(reposData) ? reposData.map((r: any) => ({ name: r.name, language: r.language, updated: r.updated_at })) : [] | |
| }); | |
| } catch (error: any) { | |
| return NextResponse.json({ error: 'GitHub lookup failed', detail: error.message }, { status: 502 }); | |
| } | |
| } | |