onCall method
FutureOr
onCall(
- T instance,
- String methodName,
- Map<
String, dynamic> parameters, - TypeReflection? returnType,
override
Calls made through a ClassProxy will be intercepted by onCall implementation.
Implementation
@override
FutureOr onCall(T instance, String methodName,
Map<String, dynamic> parameters, TypeReflection? returnType) async {
var response = api.call(APIRequest.get('$moduleName/$methodName',
parameters: parameters, credential: credential));
return response.resolveMapped((response) {
if (response.isError) {
var responseError = APIModuleProxyCallerResponseError(
'Response ERROR> ${response.error}',
response: response,
responseStatus: APIResponseStatus.ERROR,
responseError: response.error,
responseStackTrace: response.stackTrace,
module: moduleName,
methodName: methodName,
parameters: parameters,
);
var errorHandler = this.errorHandler ??
defaultErrorHandler ??
APIModuleProxyCallerListener.defaultErrorHandler;
if (errorHandler != null) {
try {
errorHandler(responseError);
} catch (e, s) {
_log.severe("Error calling `errorHandler`!", e, s);
}
}
throw responseError;
}
if (response.isNotOK) return null;
var payload = response.payload;
if (responsesAsJson && returnType != null) {
var json = responseToJson(payload, apiResponse: response);
return resolveResponse(returnType, json);
}
return payload;
});
}