From efd3a2dd1663612d231bfbe9fb37d9e02f28db4c Mon Sep 17 00:00:00 2001 From: gilesb Date: Fri, 9 Jan 2026 23:40:58 +0000 Subject: [PATCH] Fix /storage endpoint to default to HTML Same content negotiation fix as other endpoints - default to HTML for browsers, only return JSON if explicitly requested. Co-Authored-By: Claude Opus 4.5 --- server.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/server.py b/server.py index 75b6a8a..b8d1664 100644 --- a/server.py +++ b/server.py @@ -3046,11 +3046,15 @@ import storage_providers @app.get("/storage") async def list_storage(request: Request, user: User = Depends(get_optional_user)): - """List user's storage providers. HTML for browsers, JSON for API.""" + """List user's storage providers. HTML for browsers (default), JSON only if explicitly requested.""" + # Check if JSON explicitly requested + accept = request.headers.get("accept", "") + wants_json = "application/json" in accept and "text/html" not in accept + if not user: - if wants_html(request): - return RedirectResponse(url="/login", status_code=302) - raise HTTPException(401, "Authentication required") + if wants_json: + raise HTTPException(401, "Authentication required") + return RedirectResponse(url="/login", status_code=302) storages = await db.get_user_storage(user.username) @@ -3071,10 +3075,11 @@ async def list_storage(request: Request, user: User = Depends(get_optional_user) masked[k] = v storage["config_display"] = masked - if wants_html(request): - return await ui_storage_page(user.username, storages, request) + if wants_json: + return {"storages": storages} - return {"storages": storages} + # Default to HTML for browsers + return await ui_storage_page(user.username, storages, request) @app.post("/storage")