executeDownload<T> static method

Future<YKResult<T>> executeDownload<T>(
  1. List<YKInterceptor> interceptors,
  2. int maxRetries,
  3. YKNetworkingRequest request, {
  4. int retryCount = 0,
  5. Set<String>? retrySkipNames,
})

Implementation

static Future<YKResult<T>> executeDownload<T>(
  List<YKInterceptor> interceptors,
  int maxRetries,
  YKNetworkingRequest request, {
  int retryCount = 0,
  Set<String>? retrySkipNames,
}) async {
  final dio = YKNetworkingConfig.getInstance().dio;
  return _executeWithChain<T>(
    interceptors: interceptors,
    maxRetries: maxRetries,
    request: request,
    retryCount: retryCount,
    retrySkipNames: retrySkipNames,
    transport: () async {
      dio.options.baseUrl = request.baseUrl;
      final Response dioResponse;
      if (request.downloadPath != null && request.downloadPath!.isNotEmpty) {
        dioResponse = await dio.download(
          request.path,
          request.downloadPath!,
          queryParameters: request.params,
          options: Options(headers: request.commheader, responseType: ResponseType.bytes),
          cancelToken: request.cancelToken,
          onReceiveProgress: request.progressCallBack,
        );
      } else {
        dioResponse = await dio.get(
          request.path,
          queryParameters: request.params,
          options: Options(headers: request.commheader, responseType: ResponseType.bytes),
          cancelToken: request.cancelToken,
          onReceiveProgress: request.progressCallBack,
        );
      }
      return YKInterceptorResponse(
        data: dioResponse.data,
        statusCode: dioResponse.statusCode ?? 200,
        headers: dioResponse.headers.map,
        request: request,
      );
    },
  );
}