Skip to content

Commit b61220f

Browse files
committed
✨ created payments client
1 parent 346273a commit b61220f

File tree

4 files changed

+41
-16
lines changed

4 files changed

+41
-16
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import logging
2+
from decimal import Decimal
3+
4+
from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE
5+
from models_library.payments import InvoiceDataGet
6+
from models_library.products import ProductName
7+
from models_library.rabbitmq_basic_types import RPCMethodName
8+
from models_library.users import UserID
9+
from pydantic import TypeAdapter
10+
from servicelib.logging_utils import log_decorator
11+
from servicelib.rabbitmq import RabbitMQRPCClient
12+
13+
_logger = logging.getLogger(__name__)
14+
15+
16+
@log_decorator(_logger, level=logging.DEBUG)
17+
async def get_invoice_data(
18+
rabbitmq_rpc_client: RabbitMQRPCClient,
19+
*,
20+
user_id: UserID,
21+
dollar_amount: Decimal,
22+
product_name: ProductName,
23+
) -> InvoiceDataGet:
24+
result: InvoiceDataGet = await rabbitmq_rpc_client.request(
25+
WEBSERVER_RPC_NAMESPACE,
26+
TypeAdapter(RPCMethodName).validate_python("get_invoice_data"),
27+
user_id=user_id,
28+
dollar_amount=dollar_amount,
29+
product_name=product_name,
30+
)
31+
assert isinstance(result, InvoiceDataGet) # nosec
32+
return result

services/payments/src/simcore_service_payments/services/auto_recharge_process_message.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@
44
from typing import cast
55

66
from fastapi import FastAPI
7-
from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE
87
from models_library.api_schemas_webserver.wallets import (
98
GetWalletAutoRecharge,
109
PaymentMethodID,
1110
)
1211
from models_library.basic_types import NonNegativeDecimal
13-
from models_library.payments import InvoiceDataGet
14-
from models_library.rabbitmq_basic_types import RPCMethodName
1512
from models_library.rabbitmq_messages import WalletCreditsMessage
1613
from models_library.wallets import WalletID
1714
from pydantic import TypeAdapter
15+
from servicelib.rabbitmq.rpc_interfaces.webserver import (
16+
payments as webserver_payments_rpc,
17+
)
1818
from simcore_service_payments.db.auto_recharge_repo import AutoRechargeRepo
1919
from simcore_service_payments.db.payments_methods_repo import PaymentsMethodsRepo
2020
from simcore_service_payments.db.payments_transactions_repo import (
@@ -163,14 +163,12 @@ async def _perform_auto_recharge(
163163
):
164164
rabbitmq_rpc_client = get_rabbitmq_rpc_client(app)
165165

166-
result = await rabbitmq_rpc_client.request(
167-
WEBSERVER_RPC_NAMESPACE,
168-
TypeAdapter(RPCMethodName).validate_python("get_invoice_data"),
166+
invoice_data_get = await webserver_payments_rpc.get_invoice_data(
167+
rabbitmq_rpc_client,
169168
user_id=payment_method_db.user_id,
170169
dollar_amount=wallet_auto_recharge.top_up_amount_in_usd,
171170
product_name=rabbit_message.product_name,
172171
)
173-
invoice_data_get = TypeAdapter(InvoiceDataGet).validate_python(result)
174172

175173
await pay_with_payment_method(
176174
gateway=PaymentsGatewayApi.get_from_app_state(app),

services/payments/tests/unit/test_services_auto_recharge_listener.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ async def get_invoice_data(
202202
product_name: ProductName,
203203
) -> InvoiceDataGet:
204204
return InvoiceDataGet.model_validate(
205-
InvoiceDataGet.model_config["json_schema_extra"]["examples"][0]
205+
InvoiceDataGet.model_json_schema()["examples"][0]
206206
)
207207

208208
await rpc_server.register_router(router, namespace=WEBSERVER_RPC_NAMESPACE)

services/web/server/tests/unit/with_dbs/04/wallets/payments/test_payments_rpc.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,11 @@
99

1010
import pytest
1111
from aiohttp.test_utils import TestClient
12-
from models_library.api_schemas_webserver import WEBSERVER_RPC_NAMESPACE
13-
from models_library.payments import InvoiceDataGet
14-
from models_library.rabbitmq_basic_types import RPCMethodName
15-
from pydantic import TypeAdapter
1612
from pytest_simcore.helpers.monkeypatch_envs import setenvs_from_dict
1713
from pytest_simcore.helpers.typing_env import EnvVarsDict
1814
from pytest_simcore.helpers.webserver_login import UserInfoDict
1915
from servicelib.rabbitmq import RabbitMQRPCClient
16+
from servicelib.rabbitmq.rpc_interfaces.webserver.payments import get_invoice_data
2017
from settings_library.rabbit import RabbitSettings
2118
from simcore_service_webserver.application_settings import ApplicationSettings
2219
from simcore_service_webserver.payments.settings import (
@@ -75,13 +72,11 @@ async def test_one_time_payment_worfklow(
7572

7673
assert settings.PAYMENTS_FAKE_COMPLETION is False
7774

78-
result = await rpc_client.request(
79-
WEBSERVER_RPC_NAMESPACE,
80-
TypeAdapter(RPCMethodName).validate_python("get_invoice_data"),
75+
invoice_data_get = await get_invoice_data(
76+
rpc_client,
8177
user_id=logged_user["id"],
8278
dollar_amount=Decimal(900),
8379
product_name="osparc",
8480
)
85-
invoice_data_get = InvoiceDataGet.model_validate(result)
8681
assert invoice_data_get
8782
assert len(invoice_data_get.user_invoice_address.country) == 2

0 commit comments

Comments
 (0)