registerWidespreadMiddleware<T> method
Null safety
- MiddlewareAttachType attachType,
- 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);
}