executeUpload<T> static method
Future<YKResult<T> >
executeUpload<T>(
- List<
YKInterceptor> interceptors, - int maxRetries,
- YKNetworkingRequest request, {
- int retryCount = 0,
- Set<
String> ? retrySkipNames,
Implementation
static Future<YKResult<T>> executeUpload<T>(
List<YKInterceptor> interceptors,
int maxRetries,
YKNetworkingRequest request, {
int retryCount = 0,
Set<String>? retrySkipNames,
}) async {
if (request.fileLocalPath == null) {
return YKFailure<T>(
exception: const YKNetworkException(type: YKErrorType.unknown, message: 'No file to upload'),
retryCount: retryCount,
);
}
final dio = YKNetworkingConfig.getInstance().dio;
return _executeWithChain<T>(
interceptors: interceptors,
maxRetries: maxRetries,
request: request,
retryCount: retryCount,
retrySkipNames: retrySkipNames,
transport: () async {
FormData formData;
if (request.params != null && request.params!.isNotEmpty) {
final params = Map<String, dynamic>.from(request.params!);
params[request.formName] = await MultipartFile.fromFile(request.fileLocalPath!, filename: request.fileName);
formData = FormData.fromMap(params);
} else {
formData = FormData.fromMap({
request.formName: await MultipartFile.fromFile(request.fileLocalPath!, filename: request.fileName),
});
}
final config = YKNetworkingConfig.getInstance();
dio.options.baseUrl = request.baseUrl;
final dioResponse = await dio.post(
request.path,
data: formData,
options: Options(
sendTimeout: Duration(seconds: config.timeOut),
receiveTimeout: Duration(seconds: config.receiveTimeout),
headers: request.commheader,
contentType: request.contentType?.value(),
),
cancelToken: request.cancelToken,
onSendProgress: request.progressCallBack,
);
return YKInterceptorResponse(
data: dioResponse.data,
statusCode: dioResponse.statusCode ?? 200,
headers: dioResponse.headers.map,
request: request,
);
},
);
}