blob: 560f8d9882145a9c1d9028354d0f4a404162fe67 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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)
|