From 6609bdc87a19ed9735f499c23a0b5538126870a1 Mon Sep 17 00:00:00 2001 From: Alexander Piskun Date: Wed, 15 Nov 2023 19:21:19 +0300 Subject: [PATCH] added authentication for "/init" Signed-off-by: Alexander Piskun --- CHANGELOG.md | 6 ++++++ nc_py_api/_version.py | 2 +- nc_py_api/ex_app/integration_fastapi.py | 17 ++++++++++------- tests/_install.py | 4 ++-- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1366016e..5066dfbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [0.5.2 - 2023-11-xx] + +### Fixed + +- AppAPI: added authentication to `/init` endpoint. #162 + ## [0.5.1 - 2023-11-12] ### Fixed diff --git a/nc_py_api/_version.py b/nc_py_api/_version.py index fceb97d0..b2cc5ca6 100644 --- a/nc_py_api/_version.py +++ b/nc_py_api/_version.py @@ -1,3 +1,3 @@ """Version of nc_py_api.""" -__version__ = "0.5.1" +__version__ = "0.5.2.dev0" diff --git a/nc_py_api/ex_app/integration_fastapi.py b/nc_py_api/ex_app/integration_fastapi.py index 56432b76..d759c1b1 100644 --- a/nc_py_api/ex_app/integration_fastapi.py +++ b/nc_py_api/ex_app/integration_fastapi.py @@ -54,7 +54,7 @@ def set_handlers( fast_api_app: FastAPI, enabled_handler: typing.Callable[[bool, NextcloudApp], str], heartbeat_handler: typing.Optional[typing.Callable[[], str]] = None, - init_handler: typing.Optional[typing.Callable[[], None]] = None, + init_handler: typing.Optional[typing.Callable[[NextcloudApp], None]] = None, models_to_fetch: typing.Optional[list[str]] = None, models_download_params: typing.Optional[dict] = None, ): @@ -75,7 +75,7 @@ def set_handlers( :param models_download_params: Parameters to pass to ``snapshot_download`` function from **huggingface_hub**. """ - def fetch_models_task(models: list[str]) -> None: + def fetch_models_task(nc: NextcloudApp, models: list[str]) -> None: if models: from huggingface_hub import snapshot_download # noqa isort:skip pylint: disable=C0415 disable=E0401 from tqdm import tqdm # noqa isort:skip pylint: disable=C0415 disable=E0401 @@ -83,7 +83,7 @@ def fetch_models_task(models: list[str]) -> None: class TqdmProgress(tqdm): def display(self, msg=None, pos=None): if init_handler is None: - NextcloudApp().set_init_status(min(int((self.n * 100 / self.total) / len(models)), 100)) + nc.set_init_status(min(int((self.n * 100 / self.total) / len(models)), 100)) return super().display(msg, pos) params = models_download_params if models_download_params else {} @@ -94,9 +94,9 @@ def display(self, msg=None, pos=None): for model in models: snapshot_download(model, tqdm_class=TqdmProgress, **params) # noqa if init_handler is None: - NextcloudApp().set_init_status(100) + nc.set_init_status(100) else: - init_handler() + init_handler(nc) @fast_api_app.put("/enabled") def enabled_callback( @@ -114,6 +114,9 @@ def heartbeat_callback(): return responses.JSONResponse(content={"status": return_status}, status_code=200) @fast_api_app.post("/init") - def init_callback(background_tasks: BackgroundTasks): - background_tasks.add_task(fetch_models_task, models_to_fetch if models_to_fetch else []) + def init_callback( + background_tasks: BackgroundTasks, + nc: typing.Annotated[NextcloudApp, Depends(nc_app)], + ): + background_tasks.add_task(fetch_models_task, nc, models_to_fetch if models_to_fetch else []) return responses.JSONResponse(content={}, status_code=200) diff --git a/tests/_install.py b/tests/_install.py index d5e1186f..fd60cc5a 100644 --- a/tests/_install.py +++ b/tests/_install.py @@ -35,8 +35,8 @@ def enabled_handler(enabled: bool, nc: NextcloudApp) -> str: return "" -def init_handler(): - NextcloudApp().set_init_status(100) +def init_handler(nc: NextcloudApp): + nc.set_init_status(100) def heartbeat_callback():