|
10 | 10 | from models_library.progress_bar import ProgressReport |
11 | 11 | from models_library.projects_nodes_io import StorageFileID |
12 | 12 | from models_library.users import UserID |
13 | | -from pydantic import TypeAdapter |
| 13 | +from pydantic import AnyUrl, TypeAdapter |
14 | 14 | from servicelib.celery.models import TaskID |
15 | 15 | from servicelib.logging_utils import log_context |
16 | 16 | from servicelib.progress_bar import ProgressBarData |
17 | 17 |
|
| 18 | +from ...constants import LinkType |
18 | 19 | from ...dsm import get_dsm_provider |
19 | 20 | from ...simcore_s3_dsm import SimcoreS3DataManager |
20 | 21 |
|
@@ -100,3 +101,23 @@ async def _progress_cb(report: ProgressReport) -> None: |
100 | 101 | return await dsm.create_s3_export( |
101 | 102 | user_id, object_keys, progress_bar=progress_bar |
102 | 103 | ) |
| 104 | + |
| 105 | + |
| 106 | +async def export_data_as_download_link( |
| 107 | + task: Task, |
| 108 | + task_id: TaskID, |
| 109 | + *, |
| 110 | + user_id: UserID, |
| 111 | + paths_to_export: list[PathToExport], |
| 112 | +) -> AnyUrl: |
| 113 | + s3_object = await export_data( |
| 114 | + task=task, task_id=task_id, user_id=user_id, paths_to_export=paths_to_export |
| 115 | + ) |
| 116 | + |
| 117 | + dsm = get_dsm_provider(get_app_server(task.app).app).get( |
| 118 | + SimcoreS3DataManager.get_location_id() |
| 119 | + ) |
| 120 | + |
| 121 | + return await dsm.create_file_download_link( |
| 122 | + user_id=user_id, file_id=s3_object, link_type=LinkType.PRESIGNED |
| 123 | + ) |
0 commit comments