matrix-puppeteer-line/matrix_puppeteer_line/rpc/types.py

64 lines
1.7 KiB
Python
Raw Normal View History

2021-03-15 01:40:56 -04:00
# matrix-puppeteer-line - A very hacky Matrix-LINE bridge based on running LINE's Chrome extension in Puppeteer
2021-02-26 01:28:54 -05:00
# Copyright (C) 2020-2021 Tulir Asokan, Andrew Ferrazzutti
2020-08-28 09:38:06 -04:00
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
from typing import Optional, List
from attr import dataclass
from mautrix.types import SerializableAttrs
class RPCError(Exception):
pass
@dataclass
class ChatListInfo(SerializableAttrs['ChatListInfo']):
id: int
name: str
lastMsg: str
lastMsgDate: str
@dataclass
class Participant(SerializableAttrs['Participant']):
id: str
2021-02-25 22:21:11 -05:00
# TODO avatar: str
2020-08-28 09:38:06 -04:00
name: str
@dataclass
class ChatInfo(ChatListInfo, SerializableAttrs['ChatInfo']):
participants: List[Participant]
@dataclass
class Message(SerializableAttrs['Message']):
id: int
chat_id: int
is_outgoing: bool
2021-02-25 22:21:11 -05:00
sender: Optional[Participant]
2020-08-28 09:38:06 -04:00
timestamp: int = None
text: Optional[str] = None
image: Optional[str] = None
@dataclass
class StartStatus(SerializableAttrs['StartStatus']):
started: bool
is_logged_in: bool
is_connected: bool
is_permanently_disconnected: bool