diff --git a/framework/vendure/api/checkout.ts b/framework/vendure/api/checkout.ts new file mode 100644 index 000000000..6dd565e51 --- /dev/null +++ b/framework/vendure/api/checkout.ts @@ -0,0 +1,63 @@ +import { BigcommerceConfig, getConfig } from '../../bigcommerce/api' +import { NextApiHandler } from 'next' + +const checkoutApi= async (req: any, res: any, config: any) => { + try { + // TODO: make the embedded checkout work too! + const html = ` + + + + + + Checkout + + +
+

Checkout not implemented :(

+
+ + + ` + + res.status(200) + res.setHeader('Content-Type', 'text/html') + res.write(html) + res.end() + } catch (error) { + console.error(error) + + const message = 'An unexpected error ocurred' + + res.status(500).json({ data: null, errors: [{ message }] }) + } +} + +export function createApiHandler< + T = any, + H = {}, + Options extends {} = {} +>( + handler: any, + handlers: H, + defaultOptions: Options +) { + return function getApiHandler({ + config, + operations, + options, + }: { + config?: BigcommerceConfig + operations?: Partial + options?: Options extends {} ? Partial : never + } = {}): NextApiHandler { + const ops = { ...operations, ...handlers } + const opts = { ...defaultOptions, ...options } + + return function apiHandler(req, res) { + return handler(req, res, getConfig(config), ops, opts) + } + } +} + +export default createApiHandler(checkoutApi, {}, {})