downloadShareFile method

Future<DataTask> downloadShareFile(
  1. String link,
  2. String savePath, {
  3. bool autoStartTask = true,
  4. bool shouldTruncate = false,
})

Implementation

Future<DataTask> downloadShareFile(String link, String savePath,
    {bool autoStartTask = true, bool shouldTruncate = false}) async {
  dio.Response<String> res = await _client.get("/share/" + link);
  var resp = getResponse(res);
  var downloadResponse = DownloadResponse()
    ..mergeFromProto3Json(jsonDecode(resp.data));

  Int64 offset = Int64(0);
  if (!shouldTruncate && await File(savePath).exists()) {
    await File(savePath).stat().then((value) => offset = Int64(value.size));
  }

  var task = DataTask(downloadResponse.taskId, DataTaskType.Download,
      savePath, offset, downloadResponse.nodeAddr, downloadResponse.fileInfo,
      shouldTruncate: shouldTruncate);

  if (autoStartTask) {
    await task.startAsync();
  }

  return task;
}