invokeApi method
Future<HttpResponse>
invokeApi(
- BuildContext context,
- YamlMap api,
- DataContext eContext,
- String apiName,
override
Implementation
@override
Future<HttpResponse> invokeApi(
BuildContext context,
YamlMap api,
DataContext eContext,
String apiName,
) async {
if (simulateNetworkOffline) {
calls.add(APICallRecord(
name: apiName,
apiDefinition: api,
timestamp: DateTime.now(),
));
return HttpResponse.fromBody(
{'message': 'Network offline (test)'},
null,
503,
null,
APIState.error,
);
}
final forced = _forcedExceptions[apiName];
if (forced != null) {
calls.add(APICallRecord(
name: apiName,
apiDefinition: api,
timestamp: DateTime.now(),
));
throw forced;
}
final captured = _captureRequest(api, eContext);
calls.add(APICallRecord(
name: apiName,
apiDefinition: api,
timestamp: DateTime.now(),
body: captured.body,
query: captured.query,
headers: captured.headers,
));
final mock = _mocks[apiName];
if (mock == null) {
return _delegate.invokeApi(context, api, eContext, apiName);
}
if (mock.delayMs != null && mock.delayMs! > 0) {
await Future<void>.delayed(Duration(milliseconds: mock.delayMs!));
}
return HttpResponse.fromBody(
mock.body,
mock.headers?.map((k, v) => MapEntry(k, v.toString())),
mock.statusCode,
null,
APIState.success,
);
}