|
|
@ -100,43 +100,42 @@ class VideoApiView(ApiBaseView):
|
|
|
|
return Response(self.response, status=self.status_code)
|
|
|
|
return Response(self.response, status=self.status_code)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class VideoProgressView(APIView):
|
|
|
|
class VideoProgressView(ApiBaseView):
|
|
|
|
"""resolves to /api/video/<video_id>/
|
|
|
|
"""resolves to /api/video/<video_id>/
|
|
|
|
handle progress status for video
|
|
|
|
handle progress status for video
|
|
|
|
"""
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def get(self, request, video_id):
|
|
|
|
def get(request, video_id):
|
|
|
|
|
|
|
|
"""get progress for a single video"""
|
|
|
|
"""get progress for a single video"""
|
|
|
|
user_id = request.user.id
|
|
|
|
user_id = request.user.id
|
|
|
|
key = f"{user_id}:progress:{video_id}"
|
|
|
|
key = f"{user_id}:progress:{video_id}"
|
|
|
|
video_progress = RedisArchivist().get_message(key)
|
|
|
|
video_progress = RedisArchivist().get_message(key)
|
|
|
|
position = video_progress.get("position", 0)
|
|
|
|
position = video_progress.get("position", 0)
|
|
|
|
|
|
|
|
|
|
|
|
progress = {
|
|
|
|
self.response = {
|
|
|
|
"youtube_id": video_id,
|
|
|
|
"youtube_id": video_id,
|
|
|
|
"user_id": user_id,
|
|
|
|
"user_id": user_id,
|
|
|
|
"position": position,
|
|
|
|
"position": position,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return Response(progress)
|
|
|
|
return Response(self.response)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def post(self, request, video_id):
|
|
|
|
def post(request, video_id):
|
|
|
|
|
|
|
|
"""set progress position in redis"""
|
|
|
|
"""set progress position in redis"""
|
|
|
|
position = request.data.get("position", 0)
|
|
|
|
position = request.data.get("position", 0)
|
|
|
|
key = f"{request.user.id}:progress:{video_id}"
|
|
|
|
key = f"{request.user.id}:progress:{video_id}"
|
|
|
|
message = {"position": position}
|
|
|
|
message = {"position": position}
|
|
|
|
RedisArchivist().set_message(key, message, expire=False)
|
|
|
|
RedisArchivist().set_message(key, message, expire=False)
|
|
|
|
|
|
|
|
self.response = request.data
|
|
|
|
|
|
|
|
|
|
|
|
return Response(request.data)
|
|
|
|
return Response(self.response)
|
|
|
|
|
|
|
|
|
|
|
|
@staticmethod
|
|
|
|
def delete(self, request, video_id):
|
|
|
|
def delete(request, video_id):
|
|
|
|
|
|
|
|
"""delete progress position"""
|
|
|
|
"""delete progress position"""
|
|
|
|
key = f"{request.user.id}:progress:{video_id}"
|
|
|
|
key = f"{request.user.id}:progress:{video_id}"
|
|
|
|
RedisArchivist().del_message(key)
|
|
|
|
RedisArchivist().del_message(key)
|
|
|
|
|
|
|
|
self.response = {"progress-reset": video_id}
|
|
|
|
|
|
|
|
|
|
|
|
return Response({"progress-reset": video_id})
|
|
|
|
return Response(self.response)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ChannelApiView(ApiBaseView):
|
|
|
|
class ChannelApiView(ApiBaseView):
|
|
|
|