feat: connect resource library workflows
This commit is contained in:
37
app/api/libraries/uploads/presign/route.ts
Normal file
37
app/api/libraries/uploads/presign/route.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
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,
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user