import {C4CApiRequest, C4CScfContext, Router} from "../../src"; import * as path from "path"; import apiRouter from './routers/api.router'; import bodyParser from '../../src/middlewares/body.parser'; import cookieParser from "../../src/middlewares/cookie.parser"; const createApp = (request: C4CApiRequest, context: Record): Router => { const app = new Router(request, { templateFolder: path.join(__dirname, 'templates'), defaultTemplateData: { translation: {}, namespace: '' } }); console.log('created App'); app.use(bodyParser); app.use(cookieParser); // middleware app.use(async (req, res, next) => { // todo something such as logging console.log(req); await next(); }); app.get(async (req, res, next) => { // full URI const protocol = req.headers['x-client-proto'] || 'http'; const domain = process.env.DOMAIN; const url = new URL(`${protocol}://${domain}/${req.path}`); for (const key in req.queryStringParameters) { url.searchParams.append(key, req.queryStringParameters[key] as string); } const fullPath = url.toString(); req.sd = { protocol, fullPath, domain, url }; next(); }); app.get('/', async (req, res, next) => { res.text('Welcome!'); }); app.extends(apiRouter); app.get(async (req, res, next) => { res.statusCode = 404; res.text('not-found'); }); return app; }; const main = async (request: C4CApiRequest, context: C4CScfContext) => { const app = createApp(request, context); return app.serve(); }; export {main, createApp};