diff --git a/mipac/models/antenna.py b/mipac/models/antenna.py new file mode 100644 index 0000000..d0dc690 --- /dev/null +++ b/mipac/models/antenna.py @@ -0,0 +1,72 @@ +from __future__ import annotations +from datetime import datetime + +from typing import TYPE_CHECKING +from mipac.types.antenna import IAntenna, IAntennaReceiveSource +from mipac.utils.format import str_to_datetime + + +if TYPE_CHECKING: + from mipac.manager.client import ClientManager + + +class Antenna: + def __init__(self, antenna: IAntenna, *, client: ClientManager) -> None: + self.__antenna: IAntenna = antenna + self.__client: ClientManager = client + + @property + def case_sensitive(self) -> bool: + return self.__antenna['case_sensitive'] + + @property + def created_at(self) -> datetime: + return str_to_datetime(self.__antenna['created_at']) + + @property + def exclude_keywords(self) -> list[str]: + return self.__antenna['exclude_keywords'] + + @property + def has_unread_note(self) -> bool: + return self.__antenna['has_unread_note'] + + @property + def id(self) -> str: + return self.__antenna['id'] + + @property + def is_actor(self) -> bool: + return self.__antenna['is_actor'] + + @property + def keywords(self) -> list[str]: + return self.__antenna['keywords'] + + @property + def name(self) -> str: + return self.__antenna['name'] + + @property + def notify(self) -> bool: + return self.__antenna['notify'] + + @property + def src(self) -> IAntennaReceiveSource: + return self.__antenna['src'] + + @property + def user_list_id(self) -> str | None: + return self.__antenna['user_list_id'] + + @property + def users(self) -> list[str]: + return self.__antenna['users'] + + @property + def with_file(self) -> bool: + return self.__antenna['with_file'] + + @property + def with_replies(self) -> bool: + return self.__antenna['with_replies'] diff --git a/mipac/types/antenna.py b/mipac/types/antenna.py new file mode 100644 index 0000000..6e14bd6 --- /dev/null +++ b/mipac/types/antenna.py @@ -0,0 +1,20 @@ +from typing import Literal, TypedDict + +IAntennaReceiveSource = Literal['home', 'all', 'users', 'list'] + + +class IAntenna(TypedDict): + case_sensitive: bool + created_at: str + exclude_keywords: list[str] + has_unread_note: bool + id: str + is_actor: bool + keywords: list[str] + name: str + notify: bool + src: IAntennaReceiveSource + user_list_id: str | None + users: list[str] + with_file: bool + with_replies: bool