1 let jst_server = (await import('@ndcode/jst_server')).default
2 let stream_buffers = require('stream-buffers')
4 return async (env, handler) => {
5 if (env.request.method !== 'POST') {
6 env.response.setHeader('Allow', 'POST')
7 throw new jst_server.Problem(
9 `The endpoint "${env.parsed_url.path}" requires a POST request.`,
14 let write_stream = new stream_buffers.WritableStreamBuffer()
15 let data = new Promise(
16 (resolve, reject) => {
18 on('finish', () => {resolve(write_stream.getContents())}).
19 on('error', () => {reject()})
22 env.request.pipe(write_stream)
23 let args = JSON.parse((await data).toString('utf-8'))
24 console.log('endpoint', env.parsed_url.path, 'args', JSON.stringify(args))
26 let result = await handler(...args)
27 if (result === undefined)
29 console.log('endpoint', env.parsed_url.path, 'result', JSON.stringify(result))
34 Buffer.from(JSON.stringify(result, null, 2) + '\n', 'utf-8'),