getBranchMiddleware<T> function

Middleware<T> getBranchMiddleware <T>(
  1. dynamic condition,
  2. Middleware<T> trueMiddleware,
  3. Middleware<T> falseMiddleware
)

By condition splits the middleware

Example:

getBranchMiddleware(
  (context) => context.type == 'json',
  myBodyParser.json(),
  myBodyParser.urlencoded(),
);

Static condition

getBranchMiddleware(
  String.fromEnvironment('SOME_VAR') == 'SOME_VALUE',
  logger.loggedContextToFile(),
  logger.loggedContextToConsole(),
);

Implementation

Middleware<T> getBranchMiddleware<T>(
  condition,
  Middleware<T> trueMiddleware,
  Middleware<T> falseMiddleware,
) {
  BranchMiddlewareCondition(condition);

  if (condition is! Function) {
    return condition ? trueMiddleware : falseMiddleware;
  }

  return (T context, FutureOr<void> Function() next) async {
    await condition(context)
        ? trueMiddleware(context, next)
        : falseMiddleware(context, next);
  };
}