improve errors

This commit is contained in:
2025-07-21 20:24:39 -03:00
parent 52e86b9f0f
commit 2f7b880f48

View File

@@ -26,6 +26,19 @@ class EmailAlreadyExistsError(KonvivaError):
pass 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( def create_user(
id: str, id: str,
name: str, name: str,
@@ -59,15 +72,7 @@ def create_user(
) )
r.raise_for_status() r.raise_for_status()
data = r.json() data = r.json()
_raise_konviva_errors_if_any(data)
# 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)
return int(data.get('IDUsuario')) return int(data.get('IDUsuario'))
@@ -88,10 +93,7 @@ def update_user(id: str, **kwargs) -> dict:
) )
r.raise_for_status() r.raise_for_status()
data = r.json() data = r.json()
_raise_konviva_errors_if_any(data)
if err := glom(data, 'errors', default=None):
err = err[0] if isinstance(err, list) else err
raise KonvivaError(err)
return data return data
@@ -124,10 +126,7 @@ def _post_enrollment(json: dict) -> dict:
) )
r.raise_for_status() r.raise_for_status()
data = r.json() data = r.json()
_raise_konviva_errors_if_any(data)
if err := glom(data, 'errors', default=None):
err = err[0] if isinstance(err, list) else err
raise KonvivaError(err)
return data return data