summaryrefslogtreecommitdiff
path: root/Biz/PodcastItLater/Web.py
diff options
context:
space:
mode:
Diffstat (limited to 'Biz/PodcastItLater/Web.py')
-rw-r--r--Biz/PodcastItLater/Web.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/Biz/PodcastItLater/Web.py b/Biz/PodcastItLater/Web.py
index 7c85e0b..a706eb5 100644
--- a/Biz/PodcastItLater/Web.py
+++ b/Biz/PodcastItLater/Web.py
@@ -1659,6 +1659,30 @@ def add_episode_to_feed(request: Request, episode_id: int) -> Response:
)
+@app.post("/episode/{episode_id}/track")
+def track_episode(
+ request: Request,
+ episode_id: int,
+ data: FormData,
+) -> Response:
+ """Track an episode metric event (play, download)."""
+ # Get event type from form data
+ event_type_raw = data.get("event_type", "")
+ event_type = event_type_raw if isinstance(event_type_raw, str) else ""
+
+ # Validate event type
+ if event_type not in {"played", "downloaded"}:
+ return Response("Invalid event type", status_code=400)
+
+ # Get user ID if logged in (None for anonymous)
+ user_id = request.session.get("user_id")
+
+ # Track the event
+ Core.Database.track_episode_metric(episode_id, event_type, user_id)
+
+ return Response("", status_code=200)
+
+
class BaseWebTest(Test.TestCase):
"""Base class for web tests with database setup."""