makeResponse method

void makeResponse(
  1. HttpResponse res
)

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