Source code for globus_sdk.services.auth.errors
from __future__ import annotations
import logging
from globus_sdk import exc
log = logging.getLogger(__name__)
[docs]
class AuthAPIError(exc.GlobusAPIError):
"""
Error class for the API components of Globus Auth.
"""
def _post_parse_hook(self) -> bool:
# if there was only one error ID set in the response, use that as the request_id
# this allows for some errors to omit the 'id':
#
# errors=[{"id": "foo"}, {}]
#
# or for all errors to have the same 'id':
#
# errors=[{"id": "foo"}, {"id": "foo"}]
#
# but not for errors to have mixed/different 'id' values:
#
# errors=[{"id": "foo"}, {"id": "bar"}]
# step 1, collect error IDs
error_ids = {suberror.get("id") for suberror in self.errors}
# step 2, remove `None` from any sub-errors which did not set error_id or
# explicitly set it to null
error_ids.discard(None)
# step 3, check if there was exactly one error ID and it was a string
if len(error_ids) == 1:
maybe_error_id = error_ids.pop()
if isinstance(maybe_error_id, str):
self.request_id = maybe_error_id
return True