summaryrefslogtreecommitdiff
path: root/src/ollama_web/routes/settings_route.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/ollama_web/routes/settings_route.py')
-rw-r--r--src/ollama_web/routes/settings_route.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/ollama_web/routes/settings_route.py b/src/ollama_web/routes/settings_route.py
new file mode 100644
index 0000000..560f8d9
--- /dev/null
+++ b/src/ollama_web/routes/settings_route.py
@@ -0,0 +1,30 @@
+"""Application settings API endpoints."""
+
+from __future__ import annotations
+
+from starlette.requests import Request
+from starlette.responses import JSONResponse
+
+from ..settings_store import (
+ SettingsValidationError,
+ load_app_settings,
+ save_app_settings,
+)
+
+
+async def get_settings(request: Request) -> JSONResponse:
+ """GET /api/settings: return effective persisted application settings."""
+ runtime = request.app.state.settings
+ return JSONResponse(load_app_settings(runtime.data_dir, runtime.language))
+
+
+async def put_settings(request: Request) -> JSONResponse:
+ """PUT /api/settings: validate and persist application settings."""
+ try:
+ body = await request.json()
+ cleaned = save_app_settings(request.app.state.settings.data_dir, body)
+ except SettingsValidationError as exc:
+ return JSONResponse({"error": str(exc)}, status_code=400)
+ except Exception: # noqa: BLE001
+ return JSONResponse({"error": "Invalid JSON body"}, status_code=400)
+ return JSONResponse(cleaned)