fix: better error page

This commit is contained in:
Vlad Stan
2026-07-01 16:57:20 +03:00
parent 631e6d0cb0
commit fd72a8ac78
+11 -11
View File
@@ -8,7 +8,7 @@ from typing import Any
from uuid import uuid4 from uuid import uuid4
from fastapi import Depends, FastAPI, HTTPException, Request from fastapi import Depends, FastAPI, HTTPException, Request
from fastapi.responses import FileResponse, PlainTextResponse from fastapi.responses import FileResponse
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
from loguru import logger from loguru import logger
@@ -321,9 +321,8 @@ def _add_wasm_extension_frame_route(
if _has_route(app, frame_path, "GET"): if _has_route(app, frame_path, "GET"):
return return
async def serve_wasm_extension_frame(request: Request) -> Any: async def serve_wasm_extension_frame(request: Request) -> FileResponse:
if not _consume_wasm_extension_frame_token(request, extension, frame_path): _consume_wasm_extension_frame_token(request, extension, frame_path)
return PlainTextResponse("Not found", status_code=404)
response = FileResponse(entrypoint) response = FileResponse(entrypoint)
response.headers["Content-Security-Policy"] = ( response.headers["Content-Security-Policy"] = (
"sandbox allow-scripts allow-forms; " "sandbox allow-scripts allow-forms; "
@@ -408,10 +407,10 @@ def _consume_wasm_extension_frame_token(
request: Request, request: Request,
extension: WasmExtension, extension: WasmExtension,
frame_path: str, frame_path: str,
) -> bool: ) -> None:
token = request.query_params.get("frame_token") token = request.query_params.get("frame_token")
if not token: if not token:
return _reject_wasm_extension_frame(extension, frame_path, "missing") _raise_wasm_extension_frame_not_found(extension, frame_path, "missing")
token_data = cache.pop(_wasm_extension_frame_token_cache_key(token)) token_data = cache.pop(_wasm_extension_frame_token_cache_key(token))
if ( if (
@@ -419,23 +418,24 @@ def _consume_wasm_extension_frame_token(
or token_data.get("extension_id") != extension.id or token_data.get("extension_id") != extension.id
or token_data.get("frame_path") != frame_path or token_data.get("frame_path") != frame_path
): ):
return _reject_wasm_extension_frame(extension, frame_path, "unknown") _raise_wasm_extension_frame_not_found(
return True extension, frame_path, "unknown or expired"
)
def _wasm_extension_frame_token_cache_key(token: str) -> str: def _wasm_extension_frame_token_cache_key(token: str) -> str:
return f"wasm-frame-token:{token}" return f"wasm-frame-token:{token}"
def _reject_wasm_extension_frame( def _raise_wasm_extension_frame_not_found(
extension: WasmExtension, extension: WasmExtension,
frame_path: str, frame_path: str,
reason: str, reason: str,
) -> bool: ) -> None:
logger.warning( logger.warning(
f"WASM frame token {reason} for extension '{extension.id}' at '{frame_path}'." f"WASM frame token {reason} for extension '{extension.id}' at '{frame_path}'."
) )
return False raise HTTPException(status_code=404, detail="Not found")
def _wasm_extension_bridge_api_routes( def _wasm_extension_bridge_api_routes(