onRequest method
Handles dio request and creates alice http call based on it
Implementation
@override
void onRequest(RequestOptions options, RequestInterceptorHandler handler) {
final AliceHttpCall call = AliceHttpCall(options.hashCode);
final Uri uri = options.uri;
call.method = options.method;
var path = options.uri.path;
if (path.isEmpty) {
path = "/";
}
call.endpoint = path;
call.server = uri.host;
call.client = "Dio";
call.uri = options.uri.toString();
if (uri.scheme == "https") {
call.secure = true;
}
final AliceHttpRequest request = AliceHttpRequest();
final dynamic 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) {
final List<AliceFormDataField> fields = [];
data.fields.forEach((entry) {
fields.add(AliceFormDataField(entry.key, entry.value));
});
request.formDataFields = fields;
}
if (data.files.isNotEmpty == true) {
final 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);
}