Skip to content

Commit 292a3e5

Browse files
committed
✨ Add ApiKeysRpcApi subclient and integrate it into WebServerRpcClient
1 parent 9558339 commit 292a3e5

File tree

3 files changed

+62
-0
lines changed

3 files changed

+62
-0
lines changed

packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/v1/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
Provides a class-based, modular RPC client for webserver services.
44
"""
55

6+
from .api_keys import ApiKeysRpcApi
67
from .client import WebServerRpcClient
78
from .functions import FunctionsRpcApi
89
from .licenses import LicensesRpcApi
@@ -13,4 +14,5 @@
1314
"ProjectsRpcApi",
1415
"LicensesRpcApi",
1516
"FunctionsRpcApi",
17+
"ApiKeysRpcApi",
1618
)
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
"""API Keys RPC API subclient."""
2+
3+
from models_library.basic_types import IDStr
4+
from models_library.products import ProductName
5+
from models_library.rpc.webserver.auth.api_keys import ApiKeyCreate, ApiKeyGet
6+
from models_library.users import UserID
7+
8+
from ._base import BaseRpcApi
9+
10+
11+
class ApiKeysRpcApi(BaseRpcApi):
12+
"""RPC client for API key-related operations."""
13+
14+
async def create_api_key(
15+
self,
16+
*,
17+
product_name: ProductName,
18+
user_id: UserID,
19+
api_key: ApiKeyCreate,
20+
) -> ApiKeyGet:
21+
"""Create an API key."""
22+
return await self._request(
23+
"create_api_key",
24+
product_name=product_name,
25+
user_id=user_id,
26+
display_name=api_key.display_name,
27+
expiration=api_key.expiration,
28+
)
29+
30+
async def get_api_key(
31+
self,
32+
*,
33+
product_name: ProductName,
34+
user_id: UserID,
35+
api_key_id: IDStr,
36+
) -> ApiKeyGet:
37+
"""Get an API key by ID."""
38+
return await self._request(
39+
"get_api_key",
40+
product_name=product_name,
41+
user_id=user_id,
42+
api_key_id=api_key_id,
43+
)
44+
45+
async def delete_api_key_by_key(
46+
self,
47+
*,
48+
product_name: ProductName,
49+
user_id: UserID,
50+
api_key: str,
51+
) -> None:
52+
"""Delete an API key by key value."""
53+
return await self._request(
54+
"delete_api_key_by_key",
55+
product_name=product_name,
56+
user_id=user_id,
57+
api_key=api_key,
58+
)

packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/webserver/v1/client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from models_library.rpc.webserver import WEBSERVER_RPC_NAMESPACE
55
from servicelib.rabbitmq import RabbitMQRPCClient
66

7+
from .api_keys import ApiKeysRpcApi
78
from .functions import FunctionsRpcApi
89
from .licenses import LicensesRpcApi
910
from .projects import ProjectsRpcApi
@@ -24,6 +25,7 @@ def __init__(
2425
self.projects = ProjectsRpcApi(rpc_client, namespace)
2526
self.licenses = LicensesRpcApi(rpc_client, namespace)
2627
self.functions = FunctionsRpcApi(rpc_client, namespace)
28+
self.api_keys = ApiKeysRpcApi(rpc_client, namespace)
2729

2830
@property
2931
def namespace(self) -> RPCNamespace:

0 commit comments

Comments
 (0)