Skip to content

Commit e75c4fd

Browse files
committed
rename
1 parent 71e3532 commit e75c4fd

File tree

1 file changed

+41
-4
lines changed
  • services/web/server/src/simcore_service_webserver/invitations

1 file changed

+41
-4
lines changed

services/web/server/src/simcore_service_webserver/invitations/_client.py

Lines changed: 41 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import contextlib
22
import logging
3+
from contextlib import contextmanager
34
from dataclasses import dataclass
45

5-
from aiohttp import BasicAuth, ClientSession, web
6+
from aiohttp import BasicAuth, ClientResponseError, ClientSession, web
67
from aiohttp.client_exceptions import ClientError
78
from models_library.api_schemas_invitations.invitations import (
89
ApiInvitationContent,
@@ -11,17 +12,53 @@
1112
)
1213
from models_library.utils.fastapi_encoders import jsonable_encoder
1314
from pydantic import AnyHttpUrl
15+
from servicelib.aiohttp import status
1416
from yarl import URL
1517

1618
from .._constants import APP_SETTINGS_KEY
19+
from ._client import InvitationsServiceApi
20+
from .errors import (
21+
InvalidInvitationError,
22+
InvitationsError,
23+
InvitationsServiceUnavailableError,
24+
)
1725
from .settings import InvitationsSettings
1826

1927
_logger = logging.getLogger(__name__)
2028

2129

22-
#
23-
# CLIENT
24-
#
30+
@contextmanager
31+
def _handle_exceptions_as_invitations_errors():
32+
try:
33+
yield # API function calls happen
34+
35+
except ClientResponseError as err:
36+
# check possible errors
37+
if err.status == status.HTTP_422_UNPROCESSABLE_ENTITY:
38+
raise InvalidInvitationError(
39+
invitations_api_response={
40+
"err": err,
41+
"status": err.status,
42+
"message": err.message,
43+
"url": err.request_info.real_url,
44+
},
45+
) from err
46+
47+
assert err.status >= status.HTTP_400_BAD_REQUEST # nosec
48+
49+
# any other error status code
50+
raise InvitationsServiceUnavailableError(
51+
client_response_error=err,
52+
) from err
53+
54+
except InvitationsError:
55+
# bypass: prevents that the Exceptions handler catches this exception
56+
raise
57+
58+
except Exception as err:
59+
raise InvitationsServiceUnavailableError(
60+
unexpected_error=err,
61+
) from err
2562

2663

2764
@dataclass(frozen=True)

0 commit comments

Comments
 (0)