downloadFiles method

  1. @override
Future<Response> downloadFiles(
  1. List<DownloadItem> urls,
  2. String output,
  3. int threads,
  4. Map<String, dynamic> headers,
  5. Map<String, dynamic> options, {
  6. required dynamic onProgress(
    1. ProgressDownload
    ),
  7. required dynamic onDownload(
    1. SingleDownload
    ),
})
override

Implementation

@override
Future<Response> downloadFiles(
  List<DownloadItem> urls,
  String output,
  int threads,
  Map<String, dynamic> headers,
  Map<String, dynamic> options, {
  required Function(ProgressDownload) onProgress,
  required Function(SingleDownload) onDownload,
}) async {
  String idCallback = Utils.generarIDUnico();
  options["files"] = urls.map((e) => e.toMap()).toList();
  options["url"] = "";
  options["headers"] = headers;
  options["threads"] = threads;
  options["dest"] = output;
  options["processId"] = idCallback;
  listeners.add(CallBackListener(idCallback, onProgress, onDownload));

  final res = await call("DOWNLOAD_FILES", options);
  int statusCode = res["statusCode"];
  String body = res["data"];
  String status = res["status"];
  Map<String, dynamic> info = Map<String, dynamic>.from(res["info"]);
  Map<String, dynamic> network = Map<String, dynamic>.from(info["net"]);
  ResponseInfoDetail infoDetail = ResponseInfoDetail(
    timestamp: info["timestamp"],
    size: info["size"],
  );
  ResponseNetworkDetail networkDetail = ResponseNetworkDetail(
    type: network["type"],
    typeName: network["typeName"],
    state: network["state"],
    extra: network["extra"],
  );
  ResponseDetail responseDetail = ResponseDetail(
    network: networkDetail,
    detail: infoDetail,
  );

  Future.delayed(const Duration(milliseconds: 200), () {
    _removeCallBack(idCallback);
  });

  return Response(statusCode, {"data": body}, status, responseDetail);
}