listDirectory method
Implementation
Future<List<NextcloudItem>> listDirectory(String path) async {
try {
final url = Uri.parse('$baseUrl$path');
final response = http.Request('PROPFIND', url)
..headers.addAll(_getHeaders())
..headers['Depth'] = '1'
..body = '''<?xml version="1.0"?>
<d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">
<d:prop>
<d:getlastmodified />
<d:getetag />
<d:getcontenttype />
<d:resourcetype />
<d:getcontentlength />
<oc:size />
<d:displayname />
</d:prop>
</d:propfind>''';
final streamedResponse = await response.send();
final responseBody = await streamedResponse.stream.bytesToString();
if (streamedResponse.statusCode == 207) {
final items = _parseWebDavResponse(responseBody, path);
return items;
} else {
throw Exception(
'Failed to list directory: ${streamedResponse.statusCode}',
);
}
} catch (e) {
rethrow;
}
}