callHandlers<T> method
FutureOr<APIResponse<T> ?>
callHandlers<T>(
- Iterable<
APIRequestHandler> handlers, - APIRequest request, [
- String handlersType = 'external'
Attempt to process request
using an APIRequestHandler at handlers
.
Implementation
FutureOr<APIResponse<T>?> callHandlers<T>(
Iterable<APIRequestHandler> handlers, APIRequest request,
[String handlersType = 'external']) {
if (handlers.isEmpty) return null;
Iterator<APIRequestHandler> handlersIterator = handlers.iterator;
while (handlersIterator.moveNext()) {
var handler = handlersIterator.current;
try {
var response = handler<T>(this, request);
if (response == null) continue;
if (response is APIResponse) {
return response;
} else if (response is Future<APIResponse<T>?>) {
return response.then((resp) {
if (resp != null) return resp;
return _callHandlersAsync(handlersIterator, request, handlersType);
}, onError: (e, s) {
_logCallHandlersError(handlersType, handler, e, s);
return _callHandlersAsync(handlersIterator, request, handlersType);
});
} else {
continue;
}
} catch (e, s) {
_logCallHandlersError(handlersType, handler, e, s);
continue;
}
}
return null;
}