process method
This function is for internal use only
Implementation
dynamic process(HttpRequest request) {
/// a WebSocket route behind a `next` middleware: the socket is open
if (_contentData is WebSocket) return null;
HttpHeaders headers = request.response.headers;
_headers.forEach((String key, dynamic value) {
/// Content-Type has one value. `add` would keep the default
/// `text/plain` too, and the response fails with
/// "More than one value for header content-type".
if (key.length == 12 &&
key.toLowerCase() == HttpHeaders.contentTypeHeader) {
headers.set(key, value);
} else {
headers.add(key, value);
}
});
if (_statusCode != null) {
request.response.statusCode = _statusCode!;
}
dynamic content = _contentData;
if (_contentType == null && content is File) {
_contentType = ContentType.parse(
lookupMimeType(content.path) ?? 'application/octet-stream',
);
}
if (_contentType != null) {
request.response.headers.contentType = _contentType;
}
if (_cookies.isNotEmpty) {
bool https =
TrustedProxy.readClient(
request,
Dox().config.trustedProxies,
).scheme ==
'https';
for ((DoxCookie, bool) item in _cookies) {
DoxCookie cookie = item.$1;
request.response.headers.add(
HttpHeaders.setCookieHeader,
item.$2 ? cookie.expire(https: https) : cookie.get(https: https),
);
}
}
return responseDataHandler(_contentData, request);
}