diff --git a/apps/course/urls.py b/apps/course/urls.py index a7bd540..2ef331a 100644 --- a/apps/course/urls.py +++ b/apps/course/urls.py @@ -18,7 +18,7 @@ urlpatterns = [ path('online/token/validate/', views.CourseOnlineClassTokenValidateAPIView.as_view(), name='course-online-token-validate'), re_path(r'(?P[\w-]+)/online/room/create/$', views.CourseLiveSessionRoomCreateAPIView.as_view(), name='course-live-session-room-create'), path('online/room/token/', views.CourseLiveSessionTokenAPIView.as_view(), name='course-live-session-token'), - path('/live-sessions/recorded-file/', views.CourseLiveSessionRecordedFileAPIView.as_view(), name='course-live-session-recorded-file'), + path('live-sessions//recorded-file/', views.CourseLiveSessionRecordedFileAPIView.as_view(), name='course-live-session-recorded-file'), # PlugNMeet webhook endpoint path('plugnmeet/webhook/', views.PlugNMeetWebhookAPIView.as_view(), name='plugnmeet-webhook'), diff --git a/apps/course/views/live_session.py b/apps/course/views/live_session.py index 9c8328b..557dcdd 100644 --- a/apps/course/views/live_session.py +++ b/apps/course/views/live_session.py @@ -608,9 +608,9 @@ class CourseLiveSessionRecordedFileAPIView(GenericAPIView): tags=["Imam-Javad - Course"], manual_parameters=[ openapi.Parameter( - 'course_id', openapi.IN_PATH, - description="Course ID", - type=openapi.TYPE_INTEGER, + 'room_slug', openapi.IN_PATH, + description="Room Slug (e.g. room-16)", + type=openapi.TYPE_STRING, required=True ) ], @@ -620,8 +620,17 @@ class CourseLiveSessionRecordedFileAPIView(GenericAPIView): ) } ) - def patch(self, request, course_id, *args, **kwargs): - logger.info(f"[LiveSession Recorded File] Request from user_id={request.user.id} for course_id={course_id}") + def patch(self, request, room_slug, *args, **kwargs): + logger.info(f"[LiveSession Recorded File] Request from user_id={request.user.id} for room_slug={room_slug}") + + import re + match = re.search(r'\d+', room_slug) + if not match: + logger.error(f"[LiveSession Recorded File] Invalid room_slug: {room_slug}") + raise AppAPIException({'message': f'Invalid room slug: {room_slug}'}, status_code=status.HTTP_400_BAD_REQUEST) + + course_id = int(match.group()) + logger.info(f"[LiveSession Recorded File] Extracted course_id={course_id} from room_slug={room_slug}") course = get_object_or_404(Course, id=course_id)