listDirectory method

Future<List<NextcloudItem>> listDirectory(
  1. String path
)

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;
  }
}