toRequest method
Convert IsolateHttpRequest to BaseRequest
(The base class for HTTP requests).
Implementation
Future<BaseRequest?> toRequest() async {
final _uri = uri;
if (_uri != null) {
// Form data
if (files?.isNotEmpty == true || headers?.isMultipart == true) {
MultipartRequest _request = MultipartRequest(method, _uri);
if (headers?.isNotEmpty == true) {
_request.headers.addAll(headers!);
}
if (body != null) {
Map<String, dynamic> _fields = {};
if (body is Map<String, dynamic>) {
_fields = body as Map<String, dynamic>;
} else {
try {
final _jsonData = jsonDecode(body.toString());
if (_jsonData is Map<String, dynamic>) {
_fields = _jsonData;
}
} catch (e) {
// err
}
}
_fields.forEach((key, value) {
_request.fields[key] = value.toString();
});
}
if (files != null) {
for (var file in files!) {
final _file = await file.toMultipartFile();
if (_file != null) {
_request.files.add(_file);
}
}
}
return _request;
} else {
// Other
Request _request = Request(method, _uri);
if (headers?.isNotEmpty == true) {
_request.headers.addAll(headers!);
}
if (body != null) {
String? _contentType = _request.headers.contentType;
if (_contentType?.isNotEmpty != true) {
// set request default content-type as json.
_request.headers[ContentType.contentTypeHeaderKey] =
ContentType.json;
}
if (_contentType?.contains(ContentType.x_www_form_urlencoded) ==
true) {
Map<String, String> _bodyFields = {};
if (body is Map<String, dynamic>) {
(body as Map<String, dynamic>).forEach((key, value) {
_bodyFields[key] = value.toString();
});
} else {
final _jsonData = jsonDecode(body.toString());
if (_jsonData is Map<String, dynamic>) {
_jsonData.forEach((key, value) {
_bodyFields[key] = value.toString();
});
}
}
_request.bodyFields = _bodyFields;
} else {
if (_request.headers.isJson == true) {
_request.body = jsonEncode(body);
} else {
_request.body = body.toString();
}
}
}
return _request;
}
}
return null;
}