Skip to content

Commit 88afd0b

Browse files
committed
more
1 parent 099945d commit 88afd0b

File tree

1 file changed

+28
-20
lines changed

1 file changed

+28
-20
lines changed

services/storage/src/simcore_service_storage/api/rest/_simcore_s3.py

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import logging
2-
from typing import cast
2+
from typing import Annotated, cast
33

44
from aiohttp import web
5-
from aiohttp.web import RouteTableDef
65
from common_library.json_serialization import json_dumps
6+
from fastapi import APIRouter, Depends, FastAPI, Request
7+
from models_library.api_schemas_long_running_tasks.tasks import TaskGet
78
from models_library.api_schemas_storage import FileMetaDataGet, FoldersBody
9+
from models_library.generics import Envelope
810
from models_library.projects import ProjectID
911
from models_library.utils.fastapi_encoders import jsonable_encoder
1012
from servicelib.aiohttp import status
@@ -20,7 +22,6 @@
2022
from servicelib.logging_utils import log_context
2123
from settings_library.s3 import S3Settings
2224

23-
from ..._meta import API_VTAG
2425
from ...dsm import get_dsm_provider
2526
from ...models import (
2627
DeleteFolderQueryParams,
@@ -34,33 +35,32 @@
3435

3536
_logger = logging.getLogger(__name__)
3637

37-
routes = RouteTableDef()
38+
router = APIRouter(
39+
tags=[
40+
"simcore-s3",
41+
],
42+
)
3843

3944

40-
@routes.post(f"/{API_VTAG}/simcore-s3:access", name="get_or_create_temporary_s3_access")
41-
async def get_or_create_temporary_s3_access(request: web.Request) -> web.Response:
45+
@router.post("/simcore-s3:access", response_model=Envelope[S3Settings])
46+
async def get_or_create_temporary_s3_access(
47+
query_params: Annotated[StorageQueryParamsBase, Depends()],
48+
request: Request,
49+
):
4250
# NOTE: the name of the method is not accurate, these are not temporary at all
4351
# it returns the credentials of the s3 backend!
44-
query_params: StorageQueryParamsBase = parse_request_query_parameters_as(
45-
StorageQueryParamsBase, request
46-
)
47-
_logger.debug(
48-
"received call to get_or_create_temporary_s3_access with %s",
49-
f"{query_params=}",
50-
)
51-
5252
s3_settings: S3Settings = await sts.get_or_create_temporary_token_for_user(
5353
request.app, query_params.user_id
5454
)
55-
return web.json_response({"data": s3_settings.model_dump()}, dumps=json_dumps)
55+
return Envelope[S3Settings](data=s3_settings)
5656

5757

5858
async def _copy_folders_from_project(
5959
task_progress: TaskProgress,
6060
app: FastAPI,
6161
query_params: StorageQueryParamsBase,
6262
body: FoldersBody,
63-
) -> web.Response:
63+
) -> Envelope[TaskGet]:
6464
dsm = cast(
6565
SimcoreS3DataManager,
6666
get_dsm_provider(app).get(SimcoreS3DataManager.get_location_id()),
@@ -85,7 +85,11 @@ async def _copy_folders_from_project(
8585
)
8686

8787

88-
@routes.post(f"/{API_VTAG}/simcore-s3/folders", name="copy_folders_from_project")
88+
@router.post(
89+
"/simcore-s3/folders",
90+
response_model=Envelope[TaskGet],
91+
status_code=status.HTTP_202_ACCEPTED,
92+
)
8993
async def copy_folders_from_project(request: web.Request) -> web.Response:
9094
query_params: StorageQueryParamsBase = parse_request_query_parameters_as(
9195
StorageQueryParamsBase, request
@@ -105,8 +109,9 @@ async def copy_folders_from_project(request: web.Request) -> web.Response:
105109
)
106110

107111

108-
@routes.delete(
109-
f"/{API_VTAG}/simcore-s3/folders/{{folder_id}}", name="delete_folders_of_project"
112+
@router.delete(
113+
"/simcore-s3/folders/{folder_id}",
114+
status_code=status.HTTP_204_NO_CONTENT,
110115
)
111116
async def delete_folders_of_project(request: web.Request) -> web.Response:
112117
query_params: DeleteFolderQueryParams = parse_request_query_parameters_as(
@@ -131,7 +136,10 @@ async def delete_folders_of_project(request: web.Request) -> web.Response:
131136
return web.json_response(status=status.HTTP_204_NO_CONTENT)
132137

133138

134-
@routes.post(f"/{API_VTAG}/simcore-s3/files/metadata:search", name="search_files")
139+
@router.post(
140+
"/simcore-s3/files/metadata:search",
141+
response_model=Envelope[list[FileMetaDataGet]],
142+
)
135143
async def search_files(request: web.Request) -> web.Response:
136144
query_params: SearchFilesQueryParams = parse_request_query_parameters_as(
137145
SearchFilesQueryParams, request

0 commit comments

Comments
 (0)