write method

Future<void> write(
  1. Object input
)

Implementation

Future<void> write(Object input) async {
  // if (ws!=null) return;
  if (input is String) {
    res.headers.set('Content-Type', 'text/plain; charset=UTF-8');
    writeToStr(input);
  } else if (input is List) {
    res.headers.set('Content-Type', 'application/json; charset=UTF-8');
    writeToStr(json(input));
  } else if (input is Map) {
    res.headers.set('Content-Type', 'application/json; charset=UTF-8');
    writeToStr(json(input));
  } else if (input is File) {
    if (input.existsSync()) {
      if (uri.queryParameters.has('down')) {
        var filename = uri.queryParameters.get<String>('down', '').trim();
        // if (filename.isEmptyOrNull) filename = input.();
        res.headers
            .set('Content-Disposition', 'attachment;filename=${filename}');
      }
      var resETags =
          '${input.lengthSync()}-${input.lastModifiedSync().microsecondsSinceEpoch}';
      var reqETag = req.headers.value('if-none-match');
      if (reqETag == resETags) {
        res.statusCode = HttpStatus.notModified;
        return null;
      } else {
        res.headers.set('Content-Type',
            lookupMimeType(input.path) ?? 'text/plain; charset=UTF-8');
        res.headers.set('ETag', resETags);
        resLength = input.lengthSync();
        await input.openRead().pipe(res);
        return null;
      }
    }
    res.statusCode = HttpStatus.notFound;
    return await write(Dartive.error('file not exists 404'));
  } else {
    writeToStr(input.toString());
  }
}