writeResponse function

Future<void> writeResponse(
  1. HttpRequest request,
  2. Future<Response> resp
)

writeResponse takes in an HTTP request and a steward response, and writes the contents of the steward response to the HTTP response. TODO: this should only be called by Steward

Implementation

Future<void> writeResponse(HttpRequest request, Future<Response> resp) async {
  final response = await resp;
  final body = response.body;

  request.response.headers.contentType = response.headers.contentType;
  request.response.headers.date = response.headers.date;

  if (response.headers[_headersKey] != null) {
    request.response.headers.set(_headersKey, response.headers[_headersKey]!);
  }

  if (response.headers[_originKey] != null) {
    request.response.headers.set(_originKey, response.headers[_originKey]!);
  }

  if (response.headers[_methodsKey] != null) {
    request.response.headers.set(_methodsKey, response.headers[_methodsKey]!);
  }

  request.response.statusCode = response.statusCode;
  request.response.write(body);

  return;
}