#!/usr/bin/env node /* eslint-disable compat/compat */ import http from 'node:http' import qs from 'node:querystring' import he from 'he' const e = he.encode function Header () { return `
` } function Footer () { return `
` } function FormFields (fields) { function Field ([name, value]) { if (name === 'transloadit') return '' let isValueJSON = false if (value.startsWith('{') || value.startsWith('[')) { try { // eslint-disable-next-line no-param-reassign value = JSON.stringify( JSON.parse(value), null, 2, ) isValueJSON = true } catch { // Nothing } } const prettyValue = isValueJSON ? `
${e(value)}
` : e(value) return `
${e(name)}
${prettyValue}
` } return `

Form Fields

${Object.entries(fields).map(Field).join('\n')}
` } function UploadsList (uploads) { function Upload (upload) { return `
  • ${e(upload.name)}
  • ` } return ` ` } function ResultsList (results) { function Result (result) { return `
  • ${e(result.name)} View
  • ` } function ResultsSection (stepName) { return `

    ${e(stepName)}

    ` } return Object.keys(results) .map(ResultsSection) .join('\n') } function AssemblyResult (assembly) { return `

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

    ${UploadsList(assembly.uploads)} ${ResultsList(assembly.results)} ` } function onrequest (req, res) { if (req.url !== '/test') { res.writeHead(404, { 'content-type': 'text/html' }) res.end('404') return } function onbody (body) { const fields = qs.parse(body) const result = JSON.parse(fields.uppyResult) const assemblies = result[0].transloadit res.setHeader('content-type', 'text/html') res.write(Header()) res.write(FormFields(fields)) assemblies.forEach((assembly) => { res.write(AssemblyResult(assembly)) }) res.end(Footer()) } { let body = '' req.on('data', (chunk) => { body += chunk }) req.on('end', () => { onbody(body) }) } } /** * 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)