import 'package:cloudreve4_flutter/core/utils/app_logger.dart'; import 'api_service.dart'; import '../data/models/remote_download_task_model.dart'; /// 离线下载服务 class RemoteDownloadService { /// 创建离线下载任务 Future> createDownload({ required String dst, List? src, String? srcFile, }) async { final data = { 'dst': dst, if (src != null && src.isNotEmpty) 'src': src, if (srcFile != null && srcFile.isNotEmpty) 'src_file': srcFile, }; final response = await ApiService.instance .post('/workflow/download', data: data); AppLogger.i("RemoteDownloadService --> $response"); List result = response.map((item) => RemoteDownloadTaskModel.fromJson(item as Map) ).toList(); return result; } /// 列出任务 /// [category] 任务分类:downloading(下载中)、downloaded(已完成)、general(全部) Future> listTasks({ required String category, int pageSize = 20, String? nextPageToken, }) async { final params = { 'page_size': pageSize, 'category': category, 'next_page_token': ?nextPageToken, }; return await ApiService.instance .get>('/workflow', queryParameters: params); } /// 获取任务进度 Future> getProgress({required String taskId}) async { return await ApiService.instance .get>('/workflow/progress/$taskId'); } /// 选择种子文件 Future selectFiles({ required String taskId, required List> files, }) async { await ApiService.instance.patch>( '/workflow/download/$taskId', data: {'files': files}, ); } /// 取消任务 Future cancelTask({required String taskId}) async { await ApiService.instance.delete>( '/workflow/download/$taskId', ); } }