improve errors
This commit is contained in:
@@ -26,6 +26,19 @@ class EmailAlreadyExistsError(KonvivaError):
|
||||
pass
|
||||
|
||||
|
||||
def _raise_konviva_errors_if_any(data: dict = {}) -> None:
|
||||
"""Raises specific exceptions if Konviva API returned errors in the response body"""
|
||||
errors = glom(data, 'errors', default=None)
|
||||
if not errors:
|
||||
return
|
||||
|
||||
error_str = errors[0] if isinstance(errors, list) else errors
|
||||
if error_str == 'Login já existente':
|
||||
raise EmailAlreadyExistsError(error_str)
|
||||
|
||||
raise KonvivaError(error_str)
|
||||
|
||||
|
||||
def create_user(
|
||||
id: str,
|
||||
name: str,
|
||||
@@ -59,15 +72,7 @@ def create_user(
|
||||
)
|
||||
r.raise_for_status()
|
||||
data = r.json()
|
||||
|
||||
# Because Konviva does not return the proper HTTP status code
|
||||
if err := glom(data, 'errors', default=None):
|
||||
err = err[0] if isinstance(err, list) else err
|
||||
|
||||
if err == 'Login já existente':
|
||||
raise EmailAlreadyExistsError(err)
|
||||
else:
|
||||
raise KonvivaError(err)
|
||||
_raise_konviva_errors_if_any(data)
|
||||
|
||||
return int(data.get('IDUsuario'))
|
||||
|
||||
@@ -88,10 +93,7 @@ def update_user(id: str, **kwargs) -> dict:
|
||||
)
|
||||
r.raise_for_status()
|
||||
data = r.json()
|
||||
|
||||
if err := glom(data, 'errors', default=None):
|
||||
err = err[0] if isinstance(err, list) else err
|
||||
raise KonvivaError(err)
|
||||
_raise_konviva_errors_if_any(data)
|
||||
|
||||
return data
|
||||
|
||||
@@ -124,10 +126,7 @@ def _post_enrollment(json: dict) -> dict:
|
||||
)
|
||||
r.raise_for_status()
|
||||
data = r.json()
|
||||
|
||||
if err := glom(data, 'errors', default=None):
|
||||
err = err[0] if isinstance(err, list) else err
|
||||
raise KonvivaError(err)
|
||||
_raise_konviva_errors_if_any(data)
|
||||
|
||||
return data
|
||||
|
||||
|
||||
Reference in New Issue
Block a user