onRequest method
Handles dio request and creates alice http call based on it
Implementation
@override
void onRequest(
RequestOptions options,
RequestInterceptorHandler handler,
) {
AliceHttpCall call = new AliceHttpCall(options.hashCode);
Uri uri = options.uri;
call.method = options.method;
var path = options.uri.path;
if (path.length == 0) {
path = "/";
}
call.endpoint = path;
call.server = uri.host;
call.client = "Dio";
call.uri = options.uri.toString();
if (uri.scheme == "https") {
call.secure = true;
}
AliceHttpRequest request = AliceHttpRequest();
var data = options.data;
if (data == null) {
request.size = 0;
request.body = "";
} else {
if (data is FormData) {
request.body += "Form data";
if (data.fields.isNotEmpty == true) {
List<AliceFormDataField> fields = [];
data.fields.forEach((entry) {
fields.add(AliceFormDataField(entry.key, entry.value));
});
request.formDataFields = fields;
}
if (data.files.isNotEmpty == true) {
List<AliceFormDataFile> files = [];
data.files.forEach((entry) {
files.add(AliceFormDataFile(entry.value.filename!,
entry.value.contentType.toString(), entry.value.length));
});
request.formDataFiles = files;
}
} else {
request.size = utf8.encode(data.toString()).length;
request.body = data;
}
}
request.time = DateTime.now();
request.headers = options.headers;
request.contentType = options.contentType.toString();
request.queryParameters = options.queryParameters;
call.request = request;
call.response = AliceHttpResponse();
aliceCore.addCall(call);
handler.next(options);
}