Files
2026-03-28 13:42:22 +08:00

38 lines
1.0 KiB
TypeScript

import { backendRequest } from "@/lib/http/backend-client";
import {
jsonSuccess,
parseJsonBody,
withErrorHandling,
} from "@/lib/http/response";
import { parseLibraryUploadPresignPayload } from "@/lib/validation/library-resource";
type PresignUploadResponseDto = {
method: string;
upload_url: string;
headers: Record<string, string>;
storage_key: string;
public_url: string;
};
export async function POST(request: Request) {
return withErrorHandling(async () => {
const rawPayload = await parseJsonBody(request);
const payload = parseLibraryUploadPresignPayload(rawPayload);
const response = await backendRequest<PresignUploadResponseDto>(
"/library/uploads/presign",
{
method: "POST",
body: JSON.stringify(payload),
},
);
return jsonSuccess({
method: response.data.method,
uploadUrl: response.data.upload_url,
headers: response.data.headers,
storageKey: response.data.storage_key,
publicUrl: response.data.public_url,
});
});
}