From aede90eee9e2fac71e33d97e555cedc068b5ed87 Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Thu, 29 Sep 2016 18:49:41 +0200 Subject: [PATCH] Ability to pass homeset-url for DAV storage (#511) See #509 --- vdirsyncer/storage/dav.py | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/vdirsyncer/storage/dav.py b/vdirsyncer/storage/dav.py index 7479a81..9cdccf8 100644 --- a/vdirsyncer/storage/dav.py +++ b/vdirsyncer/storage/dav.py @@ -145,10 +145,7 @@ class Discover(object): def find_principal(self, url=None): if url is None: - try: - return self.find_principal('') - except (HTTPError, exceptions.Error): - return self.find_principal(self.find_dav()) + url = self.find_dav() headers = self.session.get_default_headers() headers['Depth'] = '0' @@ -191,7 +188,18 @@ class Discover(object): def find_collections(self, url=None): if url is None: - url = self.find_home() + rv = None + try: + rv = list(self.find_collections('')) + except (HTTPError, exceptions.Error): + pass + + if rv: + yield from rv + return + dav_logger.debug('Given URL is not a homeset URL') + return self.find_collections(self.find_home()) + headers = self.session.get_default_headers() headers['Depth'] = '1' r = self.session.request('PROPFIND', url, headers=headers,