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 <noreply@anthropic.com>
This commit is contained in:
gilesb
2026-01-09 23:40:58 +00:00
parent 1e3d1bb65e
commit efd3a2dd16

View File

@@ -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)
if wants_json:
raise HTTPException(401, "Authentication required")
return RedirectResponse(url="/login", status_code=302)
storages = await db.get_user_storage(user.username)
@@ -3071,11 +3075,12 @@ 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}
# Default to HTML for browsers
return await ui_storage_page(user.username, storages, request)
@app.post("/storage")
async def add_storage(req: AddStorageRequest, user: User = Depends(get_required_user)):