onInitServer method Null safety

Future<void> onInitServer()

Registers everything. Do not call and/or override this method. Use onInit instead

Implementation

Future<void> onInitServer() async {
  // register the router in the context (must be the first)
  _context.register(_router);
  // register all user endpoints and middlewares
  await onInit(_context);
  // handle all already loaded middlewares
  Set<Middleware<Request>> alreadyLoadedRequestMiddlewares = HashSet();
  Set<Middleware<Response>> alreadyLoadedResponseMiddlewares = HashSet();
  // load everything
  for (var a1 in _router.entries) {
    for (var middleware in a1.value.middlewares) {
      if (!alreadyLoadedRequestMiddlewares.contains(middleware)) {
        await middleware.onInit(_context);
        alreadyLoadedRequestMiddlewares.add(middleware);
      }
    }
    for (var a2 in a1.value.methodRouter.entries) {
      for (var middleware in a2.value.requestMiddlewares) {
        if (!alreadyLoadedRequestMiddlewares.contains(middleware)) {
          await middleware.onInit(_context);
          alreadyLoadedRequestMiddlewares.add(middleware);
        }
      }
      for (var middleware in a2.value.responseMiddlewares) {
        if (!alreadyLoadedResponseMiddlewares.contains(middleware)) {
          await middleware.onInit(_context);
          alreadyLoadedResponseMiddlewares.add(middleware);
        }
      }
      await a2.value.endpoint.onInit(_context);
    }
  }
}