22 lines
826 B
TypeScript
22 lines
826 B
TypeScript
import { NextResponse } from "next/server";
|
|
import { getShippingOptions } from "@/lib/medusa";
|
|
import { isNonEmptyString, isValidMedusaId, badRequest } from "@/lib/apiUtils";
|
|
|
|
// GET /api/checkout/shipping-options?cartId=cart_xxx
|
|
export async function GET(request: Request) {
|
|
const { searchParams } = new URL(request.url);
|
|
const cartId = searchParams.get("cartId");
|
|
if (!isNonEmptyString(cartId)) {
|
|
return badRequest("Missing cartId");
|
|
}
|
|
if (!isValidMedusaId(cartId)) {
|
|
return badRequest("Invalid cart ID format");
|
|
}
|
|
try {
|
|
const options = await getShippingOptions(cartId);
|
|
return NextResponse.json(options);
|
|
} catch (e) {
|
|
console.error("[checkout:shipping-options]", (e as Error).message);
|
|
return NextResponse.json({ error: "Failed to fetch shipping options" }, { status: 500 });
|
|
}
|
|
}
|