97 lines
2.9 KiB
Python
97 lines
2.9 KiB
Python
"""
|
|
These are member related models.
|
|
"""
|
|
|
|
from dataclasses import dataclass, field
|
|
from typing import List, Optional
|
|
|
|
from .base import BaseModel
|
|
from .common import BaseApiResponse
|
|
from .mixins import DatetimeTimeMixin
|
|
|
|
|
|
@dataclass
|
|
class MemberSnippetMemberDetails(BaseModel):
|
|
"""
|
|
A class representing the member snippet member detail.
|
|
|
|
Refer: https://developers.google.com/youtube/v3/docs/members#snippet.memberDetails
|
|
"""
|
|
|
|
channelId: Optional[str] = field(default=None)
|
|
channelUrl: Optional[str] = field(default=None, repr=False)
|
|
displayName: Optional[str] = field(default=None, repr=False)
|
|
profileImageUrl: Optional[str] = field(default=None, repr=False)
|
|
|
|
|
|
@dataclass
|
|
class MemberSnippetMembershipsDuration(BaseModel, DatetimeTimeMixin):
|
|
memberSince: Optional[str] = field(default=None)
|
|
memberTotalDurationMonths: Optional[int] = field(default=None, repr=False)
|
|
|
|
|
|
@dataclass
|
|
class MemberSnippetMembershipsDurationAtLevel(BaseModel):
|
|
level: Optional[str] = field(default=None)
|
|
memberSince: Optional[str] = field(default=None, repr=False)
|
|
memberTotalDurationMonths: Optional[int] = field(default=None, repr=False)
|
|
|
|
|
|
@dataclass
|
|
class MemberSnippetMembershipsDetails(BaseModel):
|
|
"""
|
|
A class representing the member snippet membership detail.
|
|
|
|
Refer: https://developers.google.com/youtube/v3/docs/members#snippet.membershipsDetails
|
|
"""
|
|
|
|
highestAccessibleLevel: Optional[str] = field(default=None)
|
|
highestAccessibleLevelDisplayName: Optional[str] = field(default=None)
|
|
accessibleLevels: Optional[List[str]] = field(default=None, repr=False)
|
|
membershipsDuration: Optional[MemberSnippetMembershipsDuration] = field(
|
|
default=None, repr=False
|
|
)
|
|
membershipsDurationAtLevel: Optional[
|
|
List[MemberSnippetMembershipsDurationAtLevel]
|
|
] = field(default=None, repr=False)
|
|
|
|
|
|
@dataclass
|
|
class MemberSnippet(BaseModel):
|
|
"""
|
|
A class representing the member snippet info.
|
|
|
|
Refer: https://developers.google.com/youtube/v3/docs/members#snippet
|
|
"""
|
|
|
|
creatorChannelId: Optional[str] = field(default=None)
|
|
memberDetails: Optional[MemberSnippetMemberDetails] = field(
|
|
default=None, repr=False
|
|
)
|
|
membershipsDetails: Optional[MemberSnippetMembershipsDetails] = field(
|
|
default=None, repr=False
|
|
)
|
|
|
|
|
|
@dataclass
|
|
class Member(BaseModel):
|
|
"""
|
|
A class representing the member info.
|
|
|
|
Refer: https://developers.google.com/youtube/v3/docs/members
|
|
"""
|
|
|
|
kind: Optional[str] = field(default=None)
|
|
etag: Optional[str] = field(default=None, repr=False)
|
|
snippet: Optional[MemberSnippet] = field(default=None, repr=False)
|
|
|
|
|
|
@dataclass
|
|
class MemberListResponse(BaseApiResponse):
|
|
"""
|
|
A class representing the member's retrieve response info.
|
|
|
|
Refer: https://developers.google.com/youtube/v3/docs/members/list#response
|
|
"""
|
|
|
|
items: Optional[List[Member]] = field(default=None, repr=False)
|