acp-handler
Version:
Vercel handler for Agentic Commerce Protocol (ACP) - Build checkout APIs that AI agents like ChatGPT can use to complete purchases
52 lines (50 loc) • 1.71 kB
JavaScript
import { CompleteCheckoutSessionSchema, CreateCheckoutSessionSchema, UpdateCheckoutSessionSchema, parseJSON, specError, validateBody } from "../schema-dfYBxw9A.js";
//#region src/next/index.ts
function handler(fn) {
return async (req) => fn(req);
}
function createNextCatchAll(H, S) {
const Schemas = S ?? {
create: CreateCheckoutSessionSchema,
update: UpdateCheckoutSessionSchema,
complete: CompleteCheckoutSessionSchema
};
async function GET(req, { params }) {
const seg = (await params).segments ?? [];
if (seg.length === 1) return H.get(req, seg[0]);
return specError("not_found", "Route not found", void 0, 404);
}
async function POST(req, { params }) {
const seg = (await params).segments ?? [];
if (seg.length === 0) {
const parsed = await parseJSON(req);
if (!parsed.ok) return parsed.res;
const v = validateBody(Schemas.create, parsed.body);
if (!v.ok) return v.res;
return H.create(req, v.data);
}
if (seg.length === 1) {
const parsed = await parseJSON(req);
if (!parsed.ok) return parsed.res;
const v = validateBody(Schemas.update, parsed.body);
if (!v.ok) return v.res;
return H.update(req, seg[0], v.data);
}
if (seg.length === 2 && seg[1] === "complete") {
const parsed = await parseJSON(req);
if (!parsed.ok) return parsed.res;
const v = validateBody(Schemas.complete, parsed.body);
if (!v.ok) return v.res;
return H.complete(req, seg[0], v.data);
}
if (seg.length === 2 && seg[1] === "cancel") return H.cancel(req, seg[0]);
return specError("not_found", "Route not found", void 0, 404);
}
return {
GET,
POST
};
}
//#endregion
export { createNextCatchAll, handler };
//# sourceMappingURL=index.js.map