return function (request, response) { var header = requestHeader; if (typeof header === "function") { header = requestHeader(request); } var accept = request.headers[requestHeader] || "*"; var type = MIME_PARSE.bestMatch(keys, accept); request.terms = request.terms || {}; request.terms[responseHeader] = type; if (Object.has(keys, type)) { return Q.when(types[type](request, response), function (response) { if ( respond !== null && response && response.status === 200 && response.headers ) { response.headers[responseHeader] = type; } return response; }); } else { return notAcceptable(request, response); } };
return function (request) { var accept = request.headers[requestHeader] || "*"; var type = MimeParse.bestMatch(keys, accept); request.terms = request.terms || {}; request.terms[responseHeader] = type; if (Object.has(keys, type)) { return Q(types[type]).call(void 0, request) .then(function (response) { if ( respond !== null && response && response.status === 200 && response.headers ) { response.headers[responseHeader] = type; } return response; }); } else { return notAcceptable(request); } };
function negotiate(request, types, header) { var keys = Object.keys(types); var accept = request.headers[header || "accept"] || "*"; var best = MimeParse.bestMatch(keys, accept); return types[best]; }
server.pre(function _mimeFix (req, res, next) { req.headers.accept = mimeparse.bestMatch(['text/plain','text/html','application/json'], req.headers.accept); return next(); });