Skip to content

Commit 55d6ed9

Browse files
committed
More hacks to ignore errors from Google Calendar
1 parent 7a625da commit 55d6ed9

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
@@ -143,7 +143,9 @@ async def request(
143143

144144
logger.debug(response.status)
145145
logger.debug(response.headers)
146-
logger.debug(response.content)
146+
if (response.status >= 400 and hasattr(response, 'content')
147+
and hasattr(response.content, '_buffer')):
148+
logger.debug(response.content._buffer)
147149

148150
if response.status == 412:
149151
raise exceptions.PreconditionFailed(response.reason)

vdirsyncer/storage/dav.py

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

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

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

vdirsyncer/sync/__init__.py

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

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

0 commit comments

Comments
 (0)