import 'dart:io'; import 'dart:isolate'; import 'package:flutter/services.dart'; import 'package:mangayomi/models/video.dart'; import 'package:mangayomi/providers/storage_provider.dart'; import 'package:mangayomi/utils/extensions/string_extensions.dart'; import 'package:http/http.dart' as http; import 'package:mangayomi/ffi/torrent_server_ffi.dart' as libmtorrentserver_ffi; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'torrent_server.g.dart'; class MTorrentServer { final _baseUrl = "http://127.0.0.1:3535"; Future removeTorrent(String? inforHash) async { if (inforHash == null || inforHash.isEmpty) return false; try { final res = await http .delete(Uri.parse("$_baseUrl/torrent/remove?infohash=$inforHash")); if (res.statusCode == 200) { return true; } return false; } catch (_) { return false; } } Future check() async { try { final res = await http.get(Uri.parse("$_baseUrl/")); if (res.statusCode == 200) { return true; } return false; } catch (_) { return false; } } Future getInfohash(String url) async { try { final torrentByte = (await http.get(Uri.parse(url))).bodyBytes; var request = http.MultipartRequest('POST', Uri.parse('$_baseUrl/torrent/add')); request.files.add(http.MultipartFile.fromBytes('file', torrentByte, filename: 'file.torrent')); http.StreamedResponse response = await request.send(); return await response.stream.bytesToString(); } catch (e) { rethrow; } } Future<(List