send static method

dynamic send(
  1. dynamic payload,
  2. HttpRequest request
)

Implementation

static send(payload, HttpRequest request) {
  if (payload is WebSocket) {
    return;
  }

  if (payload is DoxResponse) {
    return payload.write(request);
  }

  HttpResponse res = request.response;

  if (DoxServer().exceptionHandler != null) {
    var exceptionHandlerResponse =
        DoxServer().exceptionHandler?.handle(payload, res);
    if (exceptionHandlerResponse != null) {
      payload = exceptionHandlerResponse;
    }
  }

  String responseData;

  if (payload is Map) {
    responseData = jsonEncode(payload as Map<String, dynamic>);
    res.headers.contentType = ContentType.json;
  } else if (_hasMethod(() => payload.toJson)) {
    responseData = (payload).toJson();
    res.headers.contentType = ContentType.json;
  } else if (payload is List) {
    var data = (payload).map((e) {
      if (_hasMethod(() => e.toMap)) {
        return e.toMap();
      }
      return e;
    }).toList();
    res.headers.contentType = ContentType.json;
    responseData = jsonEncode(data);
  } else {
    responseData = payload.toString();
  }

  res.write(responseData);
  print(
      "\x1B[34m[${res.statusCode}]\x1B[0m \x1B[32m${request.method} ${request.uri.path}\x1B[0m");
  res.close();
}