mockaton
Version:
HTTP Mock Server
32 lines (25 loc) • 904 B
JavaScript
import { join } from 'node:path'
import { readFileSync } from 'node:fs'
import { log } from './utils/log.js'
import { mimeFor } from './utils/mime.js'
import { brokerByRoute } from './staticCollection.js'
import { config, calcDelay } from './config.js'
import { sendNotFound, sendPartialContent } from './utils/http-response.js'
export async function dispatchStatic(req, response) {
const broker = brokerByRoute(req.url)
setTimeout(async () => {
if (!broker || broker.status === 404) { // TESTME
log.access(req.url, 'static404')
sendNotFound(response)
return
}
log.access(req.url, 'static200')
const file = join(config.staticDir, broker.route)
if (req.headers.range)
await sendPartialContent(response, req.headers.range, file)
else {
response.setHeader('Content-Type', mimeFor(file))
response.end(readFileSync(file))
}
}, Number(broker.delayed && calcDelay()))
}