handleWebdavTest method

Future<void> handleWebdavTest(
  1. ArgResults argResults
)

Implementation

Future<void> handleWebdavTest(ArgResults argResults) async {
  final port = int.tryParse(argResults['port'] ?? '8080') ?? 8080;
  final url = Uri.parse('http://localhost:$port/');
  print('\ud83e\uddea Testing WebDAV server at $url ...');

  final basicAuth =
      'Basic ${base64Encode(utf8.encode('filen:filen-webdav'))}';

  try {
    final request = http.Request('PROPFIND', url)
      ..headers['Authorization'] = basicAuth
      ..headers['Depth'] = '0'
      ..headers['Content-Type'] = 'application/xml'
      ..body =
          '<?xml version="1.0" encoding="utf-8"?><D:propfind xmlns:D="DAV:"><D:prop><D:resourcetype/></D:prop></D:propfind>';

    final response =
        await http.Client().send(request).timeout(Duration(seconds: 10));
    await response.stream.drain<void>();

    if (response.statusCode == 207) {
      print('\u2705 Connection successful! (207 Multi-Status)');
    } else {
      print('\u274c Connection failed (${response.statusCode})');
    }
  } catch (e) {
    if (e is SocketException) {
      print('\u274c Server not reachable at $url');
    } else if (e is TimeoutException) {
      print('\u274c Connection timed out');
    } else {
      print('\u274c Connection test failed: $e');
    }
  }
}