run method
Implementation
Future<void> run() async {
_logger.info('Start server...');
final server = await HttpServer.bind("0.0.0.0", port);
_logger.info('Server started: http://0.0.0.0:$port');
await server.forEach((HttpRequest request) async {
_logger.detail('Request path: ${request.uri.path}');
try {
if (request.uri.path.startsWith(apiPath)) {
// set default status code
request.response.statusCode = HttpStatus.badRequest;
// run routes method
await _routes
.where((element) => request.uri.path.startsWith(
element.path.contains('{') ? element.path.substring(0, element.path.indexOf('{')) : element.path))
.first
.run(request);
// check if method not found
if (request.response.statusCode == HttpStatus.badRequest) {
throw AppException.badRequest();
}
// close
await request.response.close();
} else {
await HomeRoute(path).run(request);
}
} catch (e) {
if (e is AppException) {
if (e.validates == null) {
request.writeJsonWithCode(e.code, {
'code': e.code,
'message': e.message,
});
} else {
request.writeJsonWithCode(e.code, {
'code': e.code,
'message': e.message,
'validates': e.validates,
});
}
} else {
request.writeJsonWithCode(HttpStatus.internalServerError, {
'code': HttpStatus.internalServerError,
'message': e.toString(),
});
}
await request.response.close();
}
});
}