You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.5 KiB
43 lines
1.5 KiB
from rest_framework import serializers
|
|
|
|
|
|
class OnlineClassTokenCreateSerializer(serializers.Serializer):
|
|
redirect_path = serializers.CharField(required=False)
|
|
|
|
def validate_redirect_path(self, value: str) -> str:
|
|
value = value.strip()
|
|
if value and value.startswith("http"):
|
|
raise serializers.ValidationError("Redirect path must be relative to the frontend domain.")
|
|
return value
|
|
|
|
|
|
class OnlineClassTokenVerifySerializer(serializers.Serializer):
|
|
token = serializers.CharField(max_length=128)
|
|
|
|
def validate_token(self, value: str) -> str:
|
|
value = value.strip()
|
|
if not value:
|
|
raise serializers.ValidationError("Token is required.")
|
|
return value
|
|
|
|
|
|
class LiveSessionRoomCreateSerializer(serializers.Serializer):
|
|
room_id = serializers.CharField(required=False, max_length=255, allow_blank=True)
|
|
subject = serializers.CharField(required=False, max_length=255, allow_blank=True)
|
|
metadata = serializers.DictField(required=False)
|
|
|
|
def validate_room_id(self, value: str) -> str:
|
|
return value.strip()
|
|
|
|
def validate_subject(self, value: str) -> str:
|
|
return value.strip()
|
|
|
|
|
|
class LiveSessionTokenSerializer(serializers.Serializer):
|
|
course_slug = serializers.CharField(max_length=255)
|
|
|
|
def validate_course_slug(self, value: str) -> str:
|
|
value = value.strip()
|
|
if not value:
|
|
raise serializers.ValidationError("course_slug is required.")
|
|
return value
|