Improved support for 421s

This commit is contained in:
Niccolò Zapponi 2020-11-12 08:37:29 +00:00
parent 8e55d638f1
commit 1675a8dc11
No known key found for this signature in database
GPG key ID: 328B304DC670A51E

View file

@ -101,7 +101,8 @@ class PyiCloudSession(Session):
self.cookies.save(ignore_discard=True, ignore_expires=True) self.cookies.save(ignore_discard=True, ignore_expires=True)
LOGGER.debug("Cookies saved to %s", self.service.cookiejar_path) LOGGER.debug("Cookies saved to %s", self.service.cookiejar_path)
if not response.ok and content_type not in json_mimetypes: if not response.ok and (content_type not in json_mimetypes
or response.status_code in [421, 450, 500]):
if has_retried is None and response.status_code in [421, 450, 500]: if has_retried is None and response.status_code in [421, 450, 500]:
api_error = PyiCloudAPIResponseException( api_error = PyiCloudAPIResponseException(
response.reason, response.status_code, retry=True response.reason, response.status_code, retry=True
@ -160,6 +161,8 @@ class PyiCloudSession(Session):
reason + ". Please wait a few minutes then try again." reason + ". Please wait a few minutes then try again."
"The remote servers might be trying to throttle requests." "The remote servers might be trying to throttle requests."
) )
if code in [421, 450, 500]:
reason = "Authentication required for Account."
api_error = PyiCloudAPIResponseException(reason, code) api_error = PyiCloudAPIResponseException(reason, code)
LOGGER.error(api_error) LOGGER.error(api_error)