summaryrefslogtreecommitdiff
path: root/Biz
diff options
context:
space:
mode:
Diffstat (limited to 'Biz')
-rw-r--r--Biz/PodcastItLater/Web.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/Biz/PodcastItLater/Web.py b/Biz/PodcastItLater/Web.py
index 12c45c4..1a94007 100644
--- a/Biz/PodcastItLater/Web.py
+++ b/Biz/PodcastItLater/Web.py
@@ -1284,6 +1284,23 @@ def rss_feed(request: Request, token: str) -> Response: # noqa: ARG001
return Response(f"Error generating feed: {e}", status_code=500)
+@app.get("/episode/{episode_id:int}")
+def episode_detail_legacy(
+ request: Request, # noqa: ARG001
+ episode_id: int,
+) -> RedirectResponse:
+ """Redirect legacy integer episode IDs to sqid URLs.
+
+ Deprecated: This route exists for backward compatibility.
+ Will be removed in a future version.
+ """
+ episode_sqid = encode_episode_id(episode_id)
+ return RedirectResponse(
+ url=f"/episode/{episode_sqid}",
+ status_code=301, # Permanent redirect
+ )
+
+
@app.get("/episode/{episode_sqid}")
def episode_detail(
request: Request,
@@ -2124,6 +2141,19 @@ class TestEpisodeDetailPage(BaseWebTest):
self.assertIn(f'href="/episode/{self.episode_sqid}"', response.text)
self.assertIn("Test Episode", response.text)
+ def test_legacy_integer_id_redirects(self) -> None:
+ """Legacy integer episode IDs should redirect to sqid URLs."""
+ response = self.client.get(
+ f"/episode/{self.episode_id}",
+ follow_redirects=False,
+ )
+
+ self.assertEqual(response.status_code, 301)
+ self.assertEqual(
+ response.headers["location"],
+ f"/episode/{self.episode_sqid}",
+ )
+
def test() -> None:
"""Run all tests for the web module."""