import { listSpaces } from "@huggingface/hub"; import { headers } from "next/headers"; import { NextResponse } from "next/server"; export async function GET() { const authHeaders = await headers(); const token = authHeaders.get("Authorization"); if (!token) { return NextResponse.json({ user: null, errCode: 401 }, { status: 401 }); } const userResponse = await fetch("https://huggingface.co/api/whoami-v2", { headers: { Authorization: `${token}`, }, }); if (!userResponse.ok) { return NextResponse.json( { user: null, errCode: userResponse.status }, { status: userResponse.status } ); } const user = await userResponse.json(); const projects = []; for await (const space of listSpaces({ accessToken: token.replace("Bearer ", "") as string, additionalFields: ["author", "cardData"], search: { owner: user.name, } })) { if ( space.sdk === "static" && Array.isArray((space.cardData as { tags?: string[] })?.tags) && ( ((space.cardData as { tags?: string[] })?.tags?.includes("deepsite-v3")) || ((space.cardData as { tags?: string[] })?.tags?.includes("deepsite")) ) ) { projects.push(space); } } return NextResponse.json({ user, projects, errCode: null }, { status: 200 }); }