Spaces:
Paused
Paused
Download src/app/api/cloud/model/resolve/route.ts from igorkurgin/omniroute: direct link, hf CLI and curl.
- Browser
- Download file 2 kB
-
https://huggingface.co/spaces/igorkurgin/omniroute/resolve/main/src/app/api/cloud/model/resolve/route.ts
- Command line
-
hf download hf://spaces/igorkurgin/omniroute/src/app/api/cloud/model/resolve/route.ts
-
curl -L -o route.ts https://huggingface.co/spaces/igorkurgin/omniroute/resolve/main/src/app/api/cloud/model/resolve/route.ts
2 kB
| import { NextResponse } from "next/server"; | |
| import { validateApiKey, getModelAliases } from "@/models"; | |
| import { cloudResolveAliasSchema } from "@/shared/validation/schemas"; | |
| import { isValidationFailure, validateBody } from "@/shared/validation/helpers"; | |
| // Resolve model alias to provider/model | |
| export async function POST(request: Request) { | |
| let rawBody; | |
| try { | |
| rawBody = await request.json(); | |
| } catch { | |
| return NextResponse.json( | |
| { error: { message: "Invalid request", details: [{ field: "body", message: "Invalid JSON body" }] } }, | |
| { status: 400 } | |
| ); | |
| } | |
| try { | |
| const authHeader = request.headers.get("Authorization"); | |
| if (!authHeader?.startsWith("Bearer ")) { | |
| return NextResponse.json({ error: "Missing API key" }, { status: 401 }); | |
| } | |
| const apiKey = authHeader.slice(7); | |
| const validation = validateBody(cloudResolveAliasSchema, rawBody); | |
| if (isValidationFailure(validation)) { | |
| return NextResponse.json({ error: validation.error }, { status: 400 }); | |
| } | |
| const { alias } = validation.data; | |
| // Validate API key | |
| const isValid = await validateApiKey(apiKey); | |
| if (!isValid) { | |
| return NextResponse.json({ error: "Invalid API key" }, { status: 401 }); | |
| } | |
| // Get model aliases | |
| const modelAliases = await getModelAliases(); | |
| const resolvedValue = modelAliases[alias]; | |
| const resolved = typeof resolvedValue === "string" ? resolvedValue : null; | |
| if (resolved) { | |
| // Parse provider/model | |
| const firstSlash = resolved.indexOf("/"); | |
| if (firstSlash > 0) { | |
| return NextResponse.json({ | |
| alias, | |
| provider: resolved.slice(0, firstSlash), | |
| model: resolved.slice(firstSlash + 1), | |
| }); | |
| } | |
| } | |
| // Not found | |
| return NextResponse.json({ error: "Alias not found" }, { status: 404 }); | |
| } catch (error) { | |
| console.log("Model resolve error:", error); | |
| return NextResponse.json({ error: "Internal error" }, { status: 500 }); | |
| } | |
| } | |