process method

dynamic process(
  1. HttpRequest request
)

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);
}