import { NextResponse } from "next/server"; import { addShippingMethod } from "@/lib/medusa"; import { parseBody, isNonEmptyString, isValidMedusaId, badRequest, checkCsrf } from "@/lib/apiUtils"; // POST /api/checkout/shipping-method — add a shipping method to the cart export async function POST(request: Request) { const csrfError = await checkCsrf(); if (csrfError) return csrfError; const body = await parseBody<{ cartId?: unknown; optionId?: unknown }>(request); if (!body) return badRequest("Invalid request body"); const { cartId, optionId } = body; if (!isNonEmptyString(cartId) || !isNonEmptyString(optionId)) { return badRequest("Missing cartId or optionId"); } if (!isValidMedusaId(cartId) || !isValidMedusaId(optionId)) { return badRequest("Invalid ID format"); } try { const cart = await addShippingMethod(cartId, optionId); return NextResponse.json(cart); } catch (e) { console.error("[checkout:shipping-method]", (e as Error).message); return NextResponse.json({ error: "Failed to set shipping method" }, { status: 500 }); } }