Browse Source

Flatten send() (#143)

* Flatten send()

* Remove onerror parameter from run()
master
Tim Neutkens 8 years ago
committed by Leo Lamprecht
parent
commit
033f2e3182
  1. 29
      lib/server.js

29
lib/server.js

@ -10,7 +10,7 @@ const DEV = 'development' === process.env.NODE_ENV
const TESTING = 'test' === process.env.NODE_ENV
const serve = fn => server((req, res) => {
run(req, res, fn, sendError)
run(req, res, fn)
})
module.exports = exports = serve
@ -21,7 +21,7 @@ exports.send = send
exports.sendError = sendError
exports.createError = createError
async function run(req, res, fn, onError) {
async function run(req, res, fn) {
try {
const val = await fn(req, res)
@ -35,7 +35,7 @@ async function run(req, res, fn, onError) {
send(res, res.statusCode || 200, val)
}
} catch (err) {
await onError(req, res, err)
await sendError(req, res, err)
}
}
@ -72,7 +72,11 @@ async function json(req, {limit = '1mb'} = {}) {
function send(res, code, obj = null) {
res.statusCode = code
if (null !== obj) {
if (null === obj) {
res.end()
return
}
if (Buffer.isBuffer(obj)) {
if (!res.getHeader('Content-Type')) {
res.setHeader('Content-Type', 'application/octet-stream')
@ -80,14 +84,19 @@ function send(res, code, obj = null) {
res.setHeader('Content-Length', obj.length)
res.end(obj)
} else if (isStream(obj)) {
return
}
if (isStream(obj)) {
if (!res.getHeader('Content-Type')) {
res.setHeader('Content-Type', 'application/octet-stream')
}
obj.pipe(res)
} else {
let str
return
}
let str = obj
if ('object' === typeof obj) {
// we stringify before setting the header
@ -103,17 +112,11 @@ function send(res, code, obj = null) {
str = JSON.stringify(obj)
}
res.setHeader('Content-Type', 'application/json')
} else {
str = obj
}
res.setHeader('Content-Length', Buffer.byteLength(str))
res.end(str)
}
} else {
res.end()
}
}
function sendError(req, res, {statusCode, message, stack}) {
if (statusCode) {

Loading…
Cancel
Save