Skip to content

Commit 4e833ff

Browse files
authored
✨ Connects webserver and payments service (#4886)
1 parent b02f9f8 commit 4e833ff

File tree

21 files changed

+303
-328
lines changed

21 files changed

+303
-328
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from typing import Final
2+
3+
from pydantic import parse_obj_as
4+
5+
from ..rabbitmq_basic_types import RPCNamespace
6+
7+
PAYMENTS_RPC_NAMESPACE: Final[RPCNamespace] = parse_obj_as(RPCNamespace, "payments")
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import re
2+
from typing import Final
3+
4+
from pydantic import ConstrainedStr, parse_obj_as
5+
6+
REGEX_RABBIT_QUEUE_ALLOWED_SYMBOLS: Final[str] = r"^[\w\-\.]*$"
7+
8+
9+
class RPCNamespace(ConstrainedStr):
10+
min_length: int = 1
11+
max_length: int = 252
12+
regex: re.Pattern[str] | None = re.compile(REGEX_RABBIT_QUEUE_ALLOWED_SYMBOLS)
13+
14+
@classmethod
15+
def from_entries(cls, entries: dict[str, str]) -> "RPCNamespace":
16+
"""
17+
Given a list of entries creates a namespace to be used in declaring the rabbitmq queue.
18+
Keeping this to a predefined length
19+
"""
20+
composed_string = "-".join(f"{k}_{v}" for k, v in sorted(entries.items()))
21+
return parse_obj_as(cls, composed_string)

packages/service-library/src/servicelib/rabbitmq/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from models_library.rabbitmq_basic_types import RPCNamespace
2+
13
from ._client import RabbitMQClient
24
from ._client_rpc import RabbitMQRPCClient
35
from ._constants import BIND_TO_ALL_TOPICS
@@ -6,7 +8,7 @@
68
RPCNotInitializedError,
79
RPCServerError,
810
)
9-
from ._models import RPCMethodName, RPCNamespace
11+
from ._models import RPCMethodName
1012
from ._rpc_router import RPCRouter
1113
from ._utils import wait_till_rabbitmq_responsive
1214

packages/service-library/src/servicelib/rabbitmq/_client_rpc.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66
from typing import Any
77

88
import aio_pika
9+
from models_library.rabbitmq_basic_types import RPCNamespace
910
from pydantic import PositiveInt
1011
from settings_library.rabbit import RabbitSettings
1112

1213
from ..logging_utils import log_context
1314
from ._client_base import RabbitMQClientBase
1415
from ._errors import RemoteMethodNotRegisteredError, RPCNotInitializedError
15-
from ._models import RPCMethodName, RPCNamespace, RPCNamespacedMethodName
16+
from ._models import RPCMethodName, RPCNamespacedMethodName
1617
from ._rpc_router import RPCRouter
1718
from ._utils import get_rabbitmq_client_unique_name
1819

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
from typing import Final
22

33
BIND_TO_ALL_TOPICS: Final[str] = "#"
4-
REGEX_RABBIT_QUEUE_ALLOWED_SYMBOLS: Final[str] = r"^[\w\-\.]*$"

packages/service-library/src/servicelib/rabbitmq/_models.py

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22
from collections.abc import Awaitable, Callable
33
from typing import Any, Protocol
44

5+
from models_library.rabbitmq_basic_types import (
6+
REGEX_RABBIT_QUEUE_ALLOWED_SYMBOLS,
7+
RPCNamespace,
8+
)
59
from pydantic import ConstrainedStr, parse_obj_as
610

7-
from ._constants import REGEX_RABBIT_QUEUE_ALLOWED_SYMBOLS
8-
911
MessageHandler = Callable[[Any], Awaitable[bool]]
1012

1113

@@ -23,21 +25,6 @@ class RPCMethodName(ConstrainedStr):
2325
regex: re.Pattern[str] | None = re.compile(REGEX_RABBIT_QUEUE_ALLOWED_SYMBOLS)
2426

2527

26-
class RPCNamespace(ConstrainedStr):
27-
min_length: int = 1
28-
max_length: int = 252
29-
regex: re.Pattern[str] | None = re.compile(REGEX_RABBIT_QUEUE_ALLOWED_SYMBOLS)
30-
31-
@classmethod
32-
def from_entries(cls, entries: dict[str, str]) -> "RPCNamespace":
33-
"""
34-
Given a list of entries creates a namespace to be used in declaring the rabbitmq queue.
35-
Keeping this to a predefined length
36-
"""
37-
composed_string = "-".join(f"{k}_{v}" for k, v in sorted(entries.items()))
38-
return parse_obj_as(cls, composed_string)
39-
40-
4128
class RPCNamespacedMethodName(ConstrainedStr):
4229
min_length: int = 1
4330
max_length: int = 255
Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,17 @@
11
import logging
2-
from typing import Final
32

43
from fastapi import FastAPI
5-
from pydantic import parse_obj_as
6-
from servicelib.rabbitmq import RPCNamespace
4+
from models_library.api_schemas_payments import PAYMENTS_RPC_NAMESPACE
75

8-
from ...services.rabbitmq import get_rabbitmq_rpc_client, is_rabbitmq_enabled
6+
from ...services.rabbitmq import get_rabbitmq_rpc_server
97
from . import _payments
108

119
_logger = logging.getLogger(__name__)
1210

13-
PAYMENTS_RPC_NAMESPACE: Final[RPCNamespace] = parse_obj_as(RPCNamespace, "payments")
14-
1511

1612
def setup_rpc_api_routes(app: FastAPI) -> None:
1713
async def _on_startup() -> None:
18-
if is_rabbitmq_enabled(app):
19-
rpc_client = get_rabbitmq_rpc_client(app)
20-
await rpc_client.register_router(
21-
_payments.router, PAYMENTS_RPC_NAMESPACE, app
22-
)
14+
rpc_server = get_rabbitmq_rpc_server(app)
15+
await rpc_server.register_router(_payments.router, PAYMENTS_RPC_NAMESPACE, app)
2316

2417
app.add_event_handler("startup", _on_startup)

services/payments/src/simcore_service_payments/services/rabbitmq.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,7 @@ def get_rabbitmq_client(app: FastAPI) -> RabbitMQClient:
4343
return cast(RabbitMQClient, app.state.rabbitmq_client)
4444

4545

46-
def is_rabbitmq_enabled(app: FastAPI) -> bool:
47-
return app.state.rabbitmq_client is not None
48-
49-
50-
def get_rabbitmq_rpc_client(app: FastAPI) -> RabbitMQRPCClient:
46+
def get_rabbitmq_rpc_server(app: FastAPI) -> RabbitMQRPCClient:
5147
assert app.state.rabbitmq_rpc_server # nosec
5248
return cast(RabbitMQRPCClient, app.state.rabbitmq_rpc_server)
5349

services/web/server/src/simcore_service_webserver/payments/_autorecharge_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99
from models_library.users import UserID
1010
from models_library.wallets import WalletID
1111

12-
from ._api import check_wallet_permissions
1312
from ._autorecharge_db import (
1413
PaymentsAutorechargeDB,
1514
get_wallet_autorecharge,
1615
replace_wallet_autorecharge,
1716
)
1817
from ._methods_db import list_successful_payment_methods
18+
from ._onetime_api import check_wallet_permissions
1919
from .settings import get_plugin_settings
2020

2121
_logger = logging.getLogger(__name__)

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

Lines changed: 0 additions & 135 deletions
This file was deleted.

0 commit comments

Comments
 (0)