(req, res, arg)
| 13 | * @returns {*} The serialized data |
| 14 | */ |
| 15 | export function serialize (req, res, arg) { |
| 16 | const status = res.statusCode; |
| 17 | let format = req.server.mimeType, |
| 18 | accepts = explode(req.parsed.searchParams.get(FORMAT) || req.headers.accept || res.getHeader(HEADER_CONTENT_TYPE) || format, COMMA), |
| 19 | errz = arg instanceof Error || status >= INT_400, |
| 20 | result, serializer; |
| 21 | |
| 22 | for (const i of accepts) { |
| 23 | let mimetype = i.replace(regex, EMPTY); |
| 24 | |
| 25 | if (serializers.has(mimetype)) { |
| 26 | format = mimetype; |
| 27 | break; |
| 28 | } |
| 29 | } |
| 30 | |
| 31 | serializer = serializers.get(format); |
| 32 | res.removeHeader(HEADER_CONTENT_TYPE); |
| 33 | res.header(HEADER_CONTENT_TYPE, `${format}${CHARSET_UTF8}`); |
| 34 | |
| 35 | if (errz) { |
| 36 | result = serializer(null, arg, status < INT_400 ? INT_500 : status, req.server.logging.stackWire); |
| 37 | } else { |
| 38 | result = serializer(sort(arg, req), null, status); |
| 39 | } |
| 40 | |
| 41 | return result; |
| 42 | } |
no test coverage detected