Files
MWClash/lib/common/dav_client.dart
chen08209 ece8a48181 Remake desktop
Optimize change proxy

Optimize network check

Fix fallback issues

Optimize lots of details
2024-12-06 20:38:51 +08:00

57 lines
1.2 KiB
Dart

import 'dart:async';
import 'dart:typed_data';
import 'package:fl_clash/common/common.dart';
import 'package:fl_clash/models/models.dart';
import 'package:webdav_client/webdav_client.dart';
class DAVClient {
late Client client;
Completer<bool> pingCompleter = Completer();
late String fileName;
DAVClient(DAV dav) {
client = newClient(
dav.uri,
user: dav.user,
password: dav.password,
);
fileName = dav.fileName;
client.setHeaders(
{
'accept-charset': 'utf-8',
'Content-Type': 'text/xml',
},
);
client.setConnectTimeout(8000);
client.setSendTimeout(60000);
client.setReceiveTimeout(60000);
pingCompleter.complete(_ping());
}
Future<bool> _ping() async {
try {
await client.ping();
return true;
} catch (_) {
return false;
}
}
get root => "/$appName";
get backupFile => "$root/$fileName";
backup(Uint8List data) async {
await client.mkdir("$root");
await client.write("$backupFile", data);
return true;
}
Future<List<int>> recovery() async {
await client.mkdir("$root");
final data = await client.read(backupFile);
return data;
}
}