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:
19
server.py
19
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")
|
||||
|
||||
Reference in New Issue
Block a user