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;
request.data = data;
if (data == null) {
request.size = 0;
request.body = '';
} else {
if (data is FormData) {
request.body += 'Form data';
if (data.fields.isNotEmpty) {
final List<AliceFormDataField> fields = [];
for (final entry in data.fields) {
fields.add(AliceFormDataField(entry.key, entry.value));
}
request.formDataFields = fields;
}
if (data.files.isNotEmpty) {
final List<AliceFormDataFile> files = [];
for (final entry in data.files) {
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.toString();
}
}
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);
}