applyRoutes method

Future<String> applyRoutes(
  1. Router<RequestHandler> router,
  2. Reflector reflector
)

Applies the routes from this Controller to some router.

Implementation

Future<String> applyRoutes(
    Router<RequestHandler> router, Reflector reflector) async {
  // Load global expose decl
  var classMirror = reflector.reflectClass(runtimeType)!;
  var exposeDecl = findExpose(reflector);

  if (exposeDecl == null) {
    throw Exception('All controllers must carry an @Expose() declaration.');
  }

  var routable = Routable();
  var m = router.mount(exposeDecl.path!, routable);
  _mountPoint = m;
  var typeMirror = reflector.reflectType(runtimeType);

  // Pre-reflect methods
  var instanceMirror = reflector.reflectInstance(this);
  final handlers = <RequestHandler>[...exposeDecl.middleware!, ...middleware];
  final routeBuilder =
      _routeBuilder(reflector, instanceMirror, routable, handlers);
  await configureRoutes(routable);
  classMirror.declarations.forEach(routeBuilder);

  // Return the name.
  var result =
      exposeDecl.as?.isNotEmpty == true ? exposeDecl.as : typeMirror!.name;

  return Future.value(result);
}