From 06ff6ae32b9e2627d1b66648a314e6f6c09ccfc2 Mon Sep 17 00:00:00 2001 From: Richie Cahill Date: Fri, 12 Jun 2026 14:57:59 -0400 Subject: [PATCH] added ZstdMiddleware to ebook_search --- python/ebook_search/api/main.py | 2 ++ tests/test_ebook_search_ui.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/python/ebook_search/api/main.py b/python/ebook_search/api/main.py index f9937f5..a894ca3 100644 --- a/python/ebook_search/api/main.py +++ b/python/ebook_search/api/main.py @@ -18,6 +18,7 @@ from python.ebook_search.api.routes import admin_router, page_router, search_rou from python.ebook_search.api.web import STATIC_DIR from python.ebook_search.bm25_corpus import ensure_bm25_corpus from python.ebook_search.config import load_config +from python.fastapi_tools import ZstdMiddleware from python.orm.common import get_postgres_engine if TYPE_CHECKING: @@ -45,6 +46,7 @@ async def lifespan(app: FastAPI) -> AsyncIterator[None]: def create_app() -> FastAPI: """Create the EPUB search web app.""" app = FastAPI(title="EPUB Search", lifespan=lifespan) + app.add_middleware(ZstdMiddleware) app.mount("/static", StaticFiles(directory=STATIC_DIR), name="static") app.state.config = load_config() logger.info( diff --git a/tests/test_ebook_search_ui.py b/tests/test_ebook_search_ui.py index 3de8eac..025d867 100644 --- a/tests/test_ebook_search_ui.py +++ b/tests/test_ebook_search_ui.py @@ -2,6 +2,7 @@ from __future__ import annotations +from compression import zstd from fastapi.testclient import TestClient from sqlalchemy import create_engine @@ -24,6 +25,19 @@ def fake_get_postgres_engine(**_kwargs): return create_engine("sqlite+pysqlite:///:memory:", future=True) +def test_search_page_uses_zstd_when_requested(monkeypatch) -> None: + patch_app_runtime(monkeypatch) + app = create_app() + app.state.config = EbookSearchConfig(rerank=RerankConfig(enabled=False)) + + with TestClient(app) as client: + response = client.get("/", headers={"accept-encoding": "zstd"}) + + assert response.status_code == 200 + assert response.headers["content-encoding"] == "zstd" + assert b"EPUB Search" in zstd.decompress(response.content) + + def test_ui_form_passes_rerank_flag_to_search_handler(monkeypatch) -> None: captured: dict[str, object] = {}