makeResponse method
Implementation
void makeResponse(HttpResponse res) async {
res.statusCode = httpStatusCode;
if (headers.isNotEmpty) {
headers.forEach((key, value) {
res.headers.set(key, value);
});
}
switch (responseType) {
case ResponseType.json:
res.headers.contentType = ContentType.json;
try {
res.write(jsonEncode(data));
} catch (e) {
res.write('jsonEncode Error: $e');
}
await res.close();
break;
case ResponseType.html:
res.headers.contentType = ContentType.html;
res.write(data);
await res.close();
break;
case ResponseType.sse:
await sseHandler(res);
break;
case ResponseType.streamFile:
StreamFile? stream = StreamFile(
fileName: data['fileName'],
bytes: data['bytes'],
).call();
if (stream == null) {
res.headers.contentType = ContentType.json;
res.write(jsonEncode({"message": "File not found"}));
await res.close();
break;
}
res.headers.contentType = stream.contentType;
res.headers.contentLength = stream.length;
res.addStream(stream.stream!).then((_) => res.close());
break;
case ResponseType.download:
StreamFile? stream = StreamFile(
fileName: data['fileName'],
bytes: data['bytes'],
).call();
if (stream == null) {
res.headers.contentType = ContentType.json;
res.write(jsonEncode({"message": "File not found"}));
await res.close();
break;
}
res.headers.contentType = stream.contentType;
res.headers.contentLength = stream.length;
res.headers.add("Content-Disposition", stream.contentDisposition);
res.addStream(stream.stream!).then((_) => res.close());
break;
case ResponseType.redirect:
res.headers.set(HttpHeaders.locationHeader, data);
await res.close();
default:
res.write(data);
await res.close();
}
}