execute method

Future execute(
  1. String method,
  2. List? params,
  3. Future finalHandler(
    1. String method,
    2. List? params
    )
)

Implementation

Future<dynamic> execute(
  String method,
  List<dynamic>? params,
  Future<dynamic> Function(String method, List<dynamic>? params) finalHandler,
) {
  if (_middlewares.isEmpty) {
    return finalHandler(method, params);
  }

  Future<dynamic> buildChain(int index, String m, List<dynamic>? p) {
    if (index >= _middlewares.length) {
      return finalHandler(m, p);
    }
    return _middlewares[index].process(
      m,
      p,
      (nextMethod, nextParams) => buildChain(index + 1, nextMethod, nextParams),
    );
  }

  return buildChain(0, method, params);
}