#!/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 `
${uploads.map(Upload).join('\n')}
`
}
function ResultsList (results) {
function Result (result) {
return `${e(result.name)} View`
}
function ResultsSection (stepName) {
return `
${e(stepName)}
${results[stepName].map(Result).join('\n')}
`
}
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)