Fix the problem that the tray is not displayed in some cases Optimize tray Update core Fix some error
57 lines
1.2 KiB
Dart
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(8000);
|
|
client.setReceiveTimeout(8000);
|
|
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;
|
|
}
|
|
}
|