43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import { NextRequest, NextResponse } from "next/server";
|
|
import { QWEN_OAUTH_BASE_URL, createQwenHeaders } from "../constants";
|
|
|
|
export async function GET(request: NextRequest) {
|
|
try {
|
|
const authorization = request.headers.get("authorization");
|
|
if (!authorization || !authorization.startsWith("Bearer ")) {
|
|
return NextResponse.json(
|
|
{ error: "Authorization required" },
|
|
{ status: 401 }
|
|
);
|
|
}
|
|
const token = authorization.slice(7);
|
|
|
|
const userResponse = await fetch(`${QWEN_OAUTH_BASE_URL}/api/v1/user`, {
|
|
headers: {
|
|
...createQwenHeaders(),
|
|
Authorization: `Bearer ${token}`,
|
|
},
|
|
});
|
|
|
|
if (!userResponse.ok) {
|
|
const errorText = await userResponse.text();
|
|
let errorData;
|
|
try {
|
|
errorData = JSON.parse(errorText);
|
|
} catch {
|
|
errorData = { error: errorText || "Failed to fetch user info" };
|
|
}
|
|
return NextResponse.json(errorData, { status: userResponse.status });
|
|
}
|
|
|
|
const userData = await userResponse.json();
|
|
return NextResponse.json({ user: userData });
|
|
} catch (error) {
|
|
console.error("Qwen user info failed", error);
|
|
return NextResponse.json(
|
|
{ error: "internal_server_error", message: error instanceof Error ? error.message : "Failed to fetch user info" },
|
|
{ status: 500 }
|
|
);
|
|
}
|
|
}
|