call method
Route incoming requests to registered handlers.
This method allows a Router instance to be a Handler.
Implementation
FutureOr<Response> call(Request request) async {
var nodeResult = _getRoute(request.method,'/${request.url.path}');
if(nodeResult._node != null){
var params = nodeResult._params;
var middleware = nodeResult._middleware;
request = request.change(context: {'arowana/params': params});
middleware ??= ((Handler fn) => fn);
return await middleware((request) async {
var _handler = nodeResult._handle;
if (_handler is Handler) {
return await _handler.call(request);
}
if(_handler != null && params != null){
return await Function.apply(_handler, [
request,
...params.values,
]);
}
return _notFoundHandler(request);
})(request);
}
return _notFoundHandler(request);
}