diff --git a/repub/web.py b/repub/web.py index c76d0d2..b2783e5 100644 --- a/repub/web.py +++ b/repub/web.py @@ -4,7 +4,7 @@ import asyncio import hashlib from collections.abc import AsyncGenerator, Awaitable, Callable from contextlib import suppress -from datetime import UTC, datetime, timedelta +from datetime import timedelta from pathlib import Path from typing import TypedDict, cast from urllib.parse import urlparse @@ -590,23 +590,7 @@ def _load_sidebar_counts(app: Quart) -> dict[str, int]: def _rss_feed_response(feed_text: str | None) -> Response: if feed_text is None: return Response(status=404) - etag = hashlib.sha256(feed_text.encode("utf-8")).hexdigest() - if request.if_none_match.contains(etag): - response = Response(status=304) - else: - response = Response( - feed_text, - content_type="application/rss+xml; charset=utf-8", - ) - response.set_etag(etag) - response.cache_control.public = True - response.cache_control.max_age = 300 - response.expires = datetime.now(UTC) + timedelta(minutes=5) - response.vary.add("Host") - response.headers["Access-Control-Allow-Origin"] = "*" - response.headers["Access-Control-Allow-Methods"] = "GET, HEAD, OPTIONS" - response.headers["Access-Control-Allow-Headers"] = "*" - return response + return Response(feed_text, mimetype="application/rss+xml") def _read_feed_text(*, feeds_dir: Path, feed_path: str) -> str | None: diff --git a/tests/test_dev_mode.py b/tests/test_dev_mode.py index 0e68f34..ae84740 100644 --- a/tests/test_dev_mode.py +++ b/tests/test_dev_mode.py @@ -133,42 +133,5 @@ def test_published_rss_rewrites_feed_url_to_https_host_header( "https://example.com/article" "\n" ) - assert response.headers["Access-Control-Allow-Origin"] == "*" - assert response.headers["Access-Control-Allow-Methods"] == "GET, HEAD, OPTIONS" - assert response.headers["Access-Control-Allow-Headers"] == "*" - assert response.cache_control.public is True - assert response.cache_control.max_age == 300 - assert response.headers["ETag"] != "" - - asyncio.run(run()) - - -def test_published_rss_supports_conditional_requests( - monkeypatch, tmp_path: Path -) -> None: - db_path = tmp_path / "conditional-rss.db" - feeds_dir = tmp_path / "out" / "feeds" - monkeypatch.setenv("REPUBLISHER_DB_PATH", str(db_path)) - - async def run() -> None: - app = create_app() - app.config["REPUB_FEEDS_DIR"] = feeds_dir - feed_path = feeds_dir / "demo-source" / "feed.rss" - feed_path.parent.mkdir(parents=True) - feed_path.write_text( - "Demo\n", encoding="utf-8" - ) - - client = app.test_client() - first_response = await client.get("/feeds/demo-source/feed.rss") - etag = first_response.headers["ETag"] - second_response = await client.get( - "/feeds/demo-source/feed.rss", - headers={"If-None-Match": etag}, - ) - - assert second_response.status_code == 304 - assert await second_response.get_data(as_text=True) == "" - assert second_response.headers["ETag"] == etag asyncio.run(run())