mirror of https://github.com/yupix/mipac
parent
56587c6113
commit
c3298628cd
@ -0,0 +1,59 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
from typing import TYPE_CHECKING, Generic, TypeVar
|
||||||
|
|
||||||
|
from mipac.types.channel import IChannelLite
|
||||||
|
from mipac.util import str_to_datetime
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from mipac.manager import ClientManager
|
||||||
|
|
||||||
|
T = TypeVar('T', bound=IChannelLite)
|
||||||
|
|
||||||
|
|
||||||
|
class ChannelLite(Generic[T]):
|
||||||
|
def __init__(self, channel: T, *, client: ClientManager) -> None:
|
||||||
|
self._channel: T = channel
|
||||||
|
self.__client: ClientManager = client
|
||||||
|
|
||||||
|
@property
|
||||||
|
def id(self) -> str:
|
||||||
|
return self._channel['id']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def created_at(self) -> datetime:
|
||||||
|
return str_to_datetime(self._channel['created_at'])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def last_noted_at(self) -> datetime | None:
|
||||||
|
last_noted_at = self._channel.get('last_noted_at')
|
||||||
|
return str_to_datetime(last_noted_at) if last_noted_at else None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def name(self) -> str:
|
||||||
|
return self._channel['name']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def description(self) -> str | None:
|
||||||
|
return self._channel['description']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def banner_url(self) -> str | None:
|
||||||
|
return self._channel['banner_url']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def notes_count(self) -> int:
|
||||||
|
return self._channel['notes_count']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def users_count(self) -> int:
|
||||||
|
return self._channel['users_count']
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_following(self) -> bool:
|
||||||
|
return bool(self._channel['is_following'])
|
||||||
|
|
||||||
|
@property
|
||||||
|
def user_id(self) -> str:
|
||||||
|
return self._channel['user_id']
|
Loading…
Reference in new issue