buildMiddlewareChain function
Builds a handler chain from middlewares.
Example:
final chain = buildMiddlewareChain(
[AuthMiddleware(), LoggerMiddleware()],
(ctx) async {
await ctx.res.json({'status': 'ok'});
},
);
final ctx = TestContext.get('/');
await chain(ctx);
expect(ctx.response.statusCode, 200);
Implementation
Handler buildMiddlewareChain(
List<Middleware> middlewares,
Handler finalHandler,
) {
Handler current = finalHandler;
for (var i = middlewares.length - 1; i >= 0; i--) {
final mw = middlewares[i];
final next = current;
current = (ctx) => mw.handle(ctx, () => next(ctx));
}
return current;
}