registerSingleMiddleware<T> method Null safety

void registerSingleMiddleware<T>(
  1. String? uri,
  2. Method? method,
  3. MiddlewareAttachType attachType,
  4. Middleware<T> middleware
)

Used to register a Middleware in a single location

Implementation

void registerSingleMiddleware<T>(final String? uri, final Method? method,
    final MiddlewareAttachType attachType, final Middleware<T> middleware) {
  switch (attachType) {
    case MiddlewareAttachType.whenUriHasBeenExtracted:
      assert(T == Request, 'Must be a reuqest middleware');
      assert(uri != null, 'Uri must not be null');
      _router[uri]!.middlewares.add(middleware as Middleware<Request>);
      break;
    case MiddlewareAttachType.whenMethodHasBeenExtracted:
      assert(T == Request, 'Must be a reuqest middleware');
      assert(uri != null, 'Uri must not be null');
      assert(method != null, 'Method must not be null');
      _router[uri]!
          .methodRouter[method]!
          .requestMiddlewares
          .add(middleware as Middleware<Request>);
      break;
    case MiddlewareAttachType.afterEndpointExecution:
      assert(T == Response, 'Must be a response middleware');
      assert(uri != null, 'Uri must not be null');
      assert(method != null, 'Method must not be null');
      _router[uri]!
          .methodRouter[method]!
          .responseMiddlewares
          .add(middleware as Middleware<Response>);
      break;
  }
  _context.register(middleware);
}