write method
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());
}
}