requestInterceptor method
FutureOr<Request>
requestInterceptor(
- Request request
)
Implementation
FutureOr<Request> requestInterceptor(Request request) async {
request.headers['date'] = DateTime.now().toString();
final AliceHttpCall call = AliceHttpCall(request.hashCode);
call.method = request.method;
call.endpoint = request.url.path;
call.server = request.url.host;
call.client = "Get Connect";
if (request.url.scheme.contains("https")) {
call.secure = true;
}
final AliceHttpRequest aliceHttpRequest = AliceHttpRequest();
aliceHttpRequest.size = request.contentLength ?? 0;
aliceHttpRequest.body = await request.getBody();
if (aliceHttpRequest.body == 'Form Data') {
final listFormData = await request.toListFormData();
aliceHttpRequest.formDataFields =
listFormData.whereType<AliceFormDataField>().toList();
aliceHttpRequest.formDataFiles =
listFormData.whereType<AliceFormDataFile>().toList();
}
aliceHttpRequest.time = DateTime.now();
aliceHttpRequest.headers = request.headers;
String? contentType = "unknown";
if (request.headers.containsKey("Content-Type")) {
contentType = request.headers["Content-Type"];
}
aliceHttpRequest.contentType = contentType;
aliceHttpRequest.queryParameters = request.url.queryParameters;
call.request = aliceHttpRequest;
call.response = AliceHttpResponse();
aliceCore.addCall(call);
// HANDLE REQUEST TIMEOUT
Future.delayed(timeout).then((value) {
final callSelected = _selectCall(request.id);
//WHEN STILL WAITING FOR REQUEST
if (callSelected != null && callSelected.loading) {
aliceCore.addResponse(AliceHttpResponse(), request.id);
aliceCore.addError(
AliceHttpError()..error = 'Connection Timeout!',
request.id,
);
}
});
return request;
}