injectIn method

  1. @override
void injectIn(
  1. RelicRouter router
)
override

Overwrite this to define how to inject this object in owner.

Implementation

@override
void injectIn(RelicRouter router) {
  // On hot reload, Relic replays all RouterInjectables. Re-initialize
  // endpoints so new/changed endpoint classes and methods are picked up.
  if (_running) {
    endpoints.connectors.clear();
    endpoints.modules.clear();
    endpoints.initializeEndpoints(this);
    serverpod.runStartHooks();
  }

  if (serverpod.config.loggingMode == ServerpodLoggingMode.verbose) {
    router.use('/', _verboseLogging);
  }

  final healthRoutes = HealthRoutes(serverpod);

  // Register core middleware first to ensure they wrap all user middleware
  router
    ..use('/', _headers)
    ..use('/', _reportException)
    // Legacy `GET /` health endpoint - API/insights only; would collide
    // with user homepage routes on the web server, so it's wired here
    // rather than from [HealthRoutes.injectIn].
    ..get('/', healthRoutes.legacyHealth);
  healthRoutes.injectIn(router);
  router
    ..get(
      '/v1/websocket',
      _dispatchWebSocket(MethodWebsocketRequestHandler.handleWebsocket),
    )
    ..anyOf(
      {Method.get, Method.options, Method.post},
      '/serverpod_cloud_storage',
      _cloudStorage,
    )
    ..any('/**', _endpoints);
}