Skip to content

Commit d08a429

Browse files
committed
🐛 Validate service IDs in batch_get_my_services to ensure correct input format
1 parent a26dfb0 commit d08a429

File tree

1 file changed

+14
-2
lines changed
  • services/web/server/src/simcore_service_webserver/catalog

1 file changed

+14
-2
lines changed

services/web/server/src/simcore_service_webserver/catalog/_service.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
ServiceOutputGet,
1111
ServiceOutputKey,
1212
)
13+
from models_library.batch_operations import create_batch_ids_validator
1314
from models_library.products import ProductName
1415
from models_library.rest_pagination import (
1516
PageLimitInt,
@@ -25,6 +26,7 @@
2526
from models_library.users import UserID
2627
from models_library.utils.fastapi_encoders import jsonable_encoder
2728
from pint import UnitRegistry
29+
from pydantic import ValidationError
2830
from servicelib.rabbitmq._errors import RPCServerError
2931
from servicelib.rabbitmq.rpc_interfaces.catalog import services as catalog_rpc
3032
from servicelib.rabbitmq.rpc_interfaces.catalog.errors import (
@@ -94,20 +96,30 @@ async def list_latest_services(
9496
return page_data, page.meta
9597

9698

99+
_BatchServicesIdsValidator = create_batch_ids_validator(
100+
tuple[ServiceKey, ServiceVersion]
101+
)
102+
103+
97104
async def batch_get_my_services(
98105
app: web.Application,
99106
*,
100107
user_id: UserID,
101108
product_name: ProductName,
102109
services_ids: list[tuple[ServiceKey, ServiceVersion]],
103110
) -> MyServicesBatchGetResult:
104-
assert len(services_ids) > 0 # nosec
111+
try:
112+
ids = _BatchServicesIdsValidator.validate_python(services_ids)
113+
except ValidationError as err:
114+
msg = f"Invalid 'service_ids' parameter:\n{err}"
115+
raise ValueError(msg) from err
116+
105117
try:
106118
return await catalog_rpc.batch_get_my_services(
107119
get_rabbitmq_rpc_client(app),
108120
user_id=user_id,
109121
product_name=product_name,
110-
ids=services_ids,
122+
ids=ids,
111123
)
112124

113125
except RPCServerError as err:

0 commit comments

Comments
 (0)