|
11 | 11 | from aiohttp import ClientTimeout, web |
12 | 12 | from models_library.api_schemas_storage import STORAGE_RPC_NAMESPACE |
13 | 13 | from models_library.projects_nodes_io import LocationID |
| 14 | +from models_library.rest_base import RequestParameters |
14 | 15 | from models_library.storage_schemas import ( |
15 | 16 | AsyncJobGet, |
16 | 17 | AsyncJobResult, |
|
21 | 22 | FileUploadSchema, |
22 | 23 | LinkType, |
23 | 24 | ) |
| 25 | +from models_library.users import UserID |
24 | 26 | from models_library.utils.fastapi_encoders import jsonable_encoder |
25 | | -from pydantic import AnyUrl, BaseModel, ByteSize, TypeAdapter |
| 27 | +from pydantic import AnyUrl, BaseModel, ByteSize, Field, TypeAdapter |
26 | 28 | from servicelib.aiohttp import status |
27 | 29 | from servicelib.aiohttp.client_session import get_client_session |
28 | 30 | from servicelib.aiohttp.requests_validation import ( |
|
40 | 42 | from servicelib.rabbitmq.rpc_interfaces.storage.data_export import start_data_export |
41 | 43 | from servicelib.request_keys import RQT_USERID_KEY |
42 | 44 | from servicelib.rest_responses import unwrap_envelope |
| 45 | +from simcore_service_webserver.products._api import RQ_PRODUCT_KEY |
43 | 46 | from simcore_service_webserver.rabbitmq import get_rabbitmq_rpc_client |
44 | 47 | from yarl import URL |
45 | 48 |
|
@@ -385,17 +388,24 @@ class _PathParams(BaseModel): |
385 | 388 | @permission_required("storage.files.*") |
386 | 389 | @handle_data_export_exceptions |
387 | 390 | async def export_data(request: web.Request) -> web.Response: |
| 391 | + class _RequestContext(RequestParameters): |
| 392 | + user_id: UserID = Field(..., alias=RQT_USERID_KEY) # type: ignore[literal-required] |
| 393 | + product_name: str = Field(..., alias=RQ_PRODUCT_KEY) # type: ignore[literal-required] |
| 394 | + |
388 | 395 | class _PathParams(BaseModel): |
389 | 396 | location_id: LocationID |
390 | 397 |
|
391 | 398 | rabbitmq_rpc_client = get_rabbitmq_rpc_client(request.app) |
| 399 | + _req_ctx = _RequestContext.model_validate(request) |
392 | 400 | _path_params = parse_request_path_parameters_as(_PathParams, request) |
393 | 401 | data_export_post = await parse_request_body_as( |
394 | 402 | model_schema_cls=DataExportPost, request=request |
395 | 403 | ) |
396 | 404 | async_job_rpc_get = await start_data_export( |
397 | 405 | rabbitmq_rpc_client=rabbitmq_rpc_client, |
398 | | - paths=data_export_post.to_storage_model(location_id=_path_params.location_id), |
| 406 | + paths=data_export_post.to_storage_model( |
| 407 | + user_id=_req_ctx.user_id, location_id=_path_params.location_id |
| 408 | + ), |
399 | 409 | ) |
400 | 410 | return create_data_response( |
401 | 411 | AsyncJobGet.from_async_job_rpc_get(async_job_rpc_get), |
|
0 commit comments