Skip to content

Commit 3e5e438

Browse files
committed
More hacks to ignore errors from Google Calendar
1 parent 6139d6d commit 3e5e438

File tree

3 files changed

+33
-10
lines changed

3 files changed

+33
-10
lines changed

vdirsyncer/http.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,9 @@ async def request(
147147

148148
logger.debug(response.status)
149149
logger.debug(response.headers)
150-
logger.debug(response.content)
150+
if (response.status >= 400 and hasattr(response, 'content')
151+
and hasattr(response.content, '_buffer')):
152+
logger.debug(response.content._buffer)
151153

152154
if response.status == 412:
153155
raise exceptions.PreconditionFailed(response.reason)

vdirsyncer/storage/dav.py

+30-8
Original file line numberDiff line numberDiff line change
@@ -598,11 +598,22 @@ async def update(self, href, item, etag):
598598
except aiohttp.ClientResponseError as e:
599599
if e.status == 409:
600600
dav_logger.debug("Conflict, will delete old event and recreate it.")
601-
await self.delete(self._normalize_href(href), None)
602-
dav_logger.debug("Now trying again")
603-
href, etag = await self._put(self._normalize_href(href), item, None)
601+
try:
602+
await self.delete(self._normalize_href(href), None)
603+
dav_logger.debug("Now trying again")
604+
rv = await self._put(self._normalize_href(href), item, None)
605+
except aiohttp.ClientResponseError as delerr:
606+
dav_logger.debug(f"delerr.status = {delerr.status}")
607+
if delerr.status == 404:
608+
dav_logger("Old event not found, ignoring")
609+
rv = None, None
610+
else:
611+
raise
612+
elif e.status == 403:
613+
dav_logger.debug("Google Calendar refusing update, ignore")
614+
rv = None, None
604615
else:
605-
raise e
616+
raise
606617
return etag
607618

608619
async def upload(self, item: Item):
@@ -612,11 +623,22 @@ async def upload(self, item: Item):
612623
except aiohttp.ClientResponseError as e:
613624
if e.status == 409:
614625
dav_logger.debug("Conflict, will delete old event and recreate it.")
615-
await self.delete(href, None)
616-
dav_logger.debug("Now trying again")
617-
rv = await self._put(href, item, None)
626+
try:
627+
await self.delete(href, None)
628+
dav_logger.debug("Now trying again")
629+
rv = await self._put(href, item, None)
630+
except aiohttp.ClientResponseError as delerr:
631+
dav_logger.debug(f"delerr.status = {delerr.status}")
632+
if delerr.status == 404:
633+
dav_logger.debug("Old event not found, ignoring")
634+
rv = None, None
635+
else:
636+
raise
637+
elif e.status == 403:
638+
dav_logger.debug("Google Calendar refusing update, ignore")
639+
rv = None, None
618640
else:
619-
raise e
641+
raise
620642
return rv
621643

622644
async def delete(self, href, etag):

vdirsyncer/sync/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,6 @@ async def _run_impl(self, a, b):
208208
)
209209
)
210210
href, etag = await self.dest.storage.upload(self.item)
211-
assert href is not None
212211

213212
self.dest.status.insert_ident(
214213
self.ident, ItemMetadata(href=href, hash=self.item.hash, etag=etag)

0 commit comments

Comments
 (0)