/* eslint-disable compat/compat */ const http = require('node:http') const qs = require('node:querystring') const e = require('he').encode /** * A very haxxor server that outputs some of the data it receives in a POST form parameter. */ const server = http.createServer(onrequest) server.listen(9967) function onrequest (req, res) { if (req.url !== '/test') { res.writeHead(404, { 'content-type': 'text/html' }) res.end('404') return } let body = '' req.on('data', (chunk) => { body += chunk }) req.on('end', () => { onbody(body) }) function onbody (body) { const fields = qs.parse(body) const assemblies = JSON.parse(fields.transloadit) res.setHeader('content-type', 'text/html') res.write(Header()) res.write(FormFields(fields)) assemblies.forEach((assembly) => { res.write(AssemblyResult(assembly)) }) res.end(Footer()) } } function Header () { return `
` } function Footer () { return `
` } function FormFields (fields) { return `

Form Fields

${Object.entries(fields).map(Field).join('\n')}
` function Field ([name, value]) { if (name === 'transloadit') return '' return `
${e(name)}
${e(value)}
` } } function AssemblyResult (assembly) { return `

${e(assembly.assembly_id)} (${e(assembly.ok)})

${UploadsList(assembly.uploads)} ${ResultsList(assembly.results)} ` } function UploadsList (uploads) { return ` ` function Upload (upload) { return `
  • ${e(upload.name)}
  • ` } } function ResultsList (results) { return Object.keys(results) .map(ResultsSection) .join('\n') function ResultsSection (stepName) { return `

    ${e(stepName)}

    ` } function Result (result) { return `
  • ${e(result.name)} View
  • ` } }