registerWidespreadMiddleware<T> method Null safety

void registerWidespreadMiddleware<T>(
  1. MiddlewareAttachType attachType,
  2. Middleware<T> middleware
)

Used to register a Middleware in multiple location based on Middleware.attachTo

Implementation

void registerWidespreadMiddleware<T>(
    final MiddlewareAttachType attachType, final Middleware<T> middleware) {
  switch (attachType) {
    case MiddlewareAttachType.whenUriHasBeenExtracted:
      assert(T == Request, 'Must be a reuqest middleware');
      for (var mapBase in _router.entries) {
        if (middleware.attachTo(mapBase.key, null)) {
          var instance = middleware.clone ?? middleware;
          mapBase.value.middlewares.add(instance as Middleware<Request>);
        }
      }
      break;
    case MiddlewareAttachType.whenMethodHasBeenExtracted:
      assert(T == Request, 'Must be a reuqest middleware');
      for (var mapBase in _router.entries) {
        for (var methodMap in mapBase.value.methodRouter.entries) {
          if (middleware.attachTo(mapBase.key, methodMap.key)) {
            var instance = middleware.clone ?? middleware;
            methodMap.value.requestMiddlewares
                .add(instance as Middleware<Request>);
          }
        }
      }
      break;
    case MiddlewareAttachType.afterEndpointExecution:
      assert(T == Response, 'Must be a response middleware');
      for (var mapBase in _router.entries) {
        for (var methodMap in mapBase.value.methodRouter.entries) {
          if (middleware.attachTo(mapBase.key, methodMap.key)) {
            var instance = middleware.clone ?? middleware;
            methodMap.value.responseMiddlewares
                .add(instance as Middleware<Response>);
          }
        }
      }
      break;
  }
  _context.register(middleware);
}