Spaces:
Running
Running
| 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 }); | |
| } | |