@coursebuilder/next
Version:
Next for Course Builder.
36 lines (35 loc) • 1.43 kB
JavaScript
import { headers } from 'next/headers.js';
import { CourseBuilder } from '@coursebuilder/core';
import { reqWithEnvURL, setEnvDefaults } from './lib/env.js';
import { initCourseBuilder } from './lib/index.js';
export default function NextCourseBuilder(config) {
if (typeof config === 'function') {
const httpHandler = (req) => {
const isWebhook = ['stripe-signature'].every((prop) => prop in req.headers);
const _config = config(req);
setEnvDefaults(_config);
return CourseBuilder(reqWithEnvURL(req), _config);
};
return {
handlers: { GET: httpHandler, POST: httpHandler },
coursebuilder: initCourseBuilder(config, (c) => setEnvDefaults(c)),
};
}
setEnvDefaults(config);
const httpHandler = async (req) => {
const stripeHeader = (await headers()).get('stripe-signature');
const isWebhook = ['stripe-signature'].every((prop) => {
return prop in req.headers;
});
// const body = await req.text()
const newReq = reqWithEnvURL(req);
const handler = CourseBuilder(newReq, config);
// const body = await newReq.text()
// console.log('body', body)
return handler;
};
return {
handlers: { POST: httpHandler, GET: httpHandler },
coursebuilder: initCourseBuilder(config, (c) => setEnvDefaults(c)),
};
}