codimd-to-gitlab-sync/src/MattermostObjects.py

132 lines
3.3 KiB
Python

from typing import NamedTuple, List, Dict
class MMUser(NamedTuple):
id: str
create_at: int
update_at: int
delete_at: int
username: str
first_name: str
last_name: str
nickname: str
email: str
auth_data: str
auth_service: str
roles: str
locale: str
timezone: dict
position: any
is_bot: bool = None
bot_description: str = None
email_verified: bool = None
notify_props: dict = None
last_password_update: int = None
failed_attempts: int = None
mfa_active: bool = False
terms_of_service_id: str = None
terms_of_service_create_at: int = None
props: dict = {}
last_picture_update: int = None
@staticmethod
def load(data):
try:
return MMUser(**data)
except TypeError as e:
print("[ERROR] Could not load dict into MMUser namedtuple")
print(str(e))
class MMPostProps(NamedTuple):
from_webhook: str = False
override_icon_url: str = None
override_username: str = None
webhook_display_name: str = None
channel_mentions: Dict = None
matterircd_krcggydky38kdcuubsc7fddc7w: str = None
matterircd_s4ptwhx7wfnx7qwexp1khorh7e: str = None
username: str = None
userId: str = None
old_header: str = None
new_header: str = None
old_purpose: str = None
new_purpose: str = None
old_displayname: str = None
new_displayname: str = None
remove_link_preview: str = None
removedUserId: str = None
addedUserId: str = None
removedUsername: str = None
addedUsername: str = None
message: str = None
attachments: str = None
from_bot: str = False
class MMPost(NamedTuple):
channel_id: str
create_at: int
delete_at: int
edit_at: int
hashtags: str
id: str
is_pinned: bool
message: str
metadata: Dict
original_id: str
parent_id: str
pending_post_id: str
root_id: str
type: str
update_at: int
user_id: str
message_source: str = None
has_reactions: bool = None
file_ids: List[str] = None
props: MMPostProps = None
def from_human(self):
return self.props is None or (
self.props.from_webhook is False and self.props.from_bot is False
)
@staticmethod
def load(data):
try:
props = None
if "props" in data:
try:
props: MMPostProps = MMPostProps(**data["props"])
except TypeError as e:
print("[ERROR] Could not load dict into MMPostProps namedtuple")
print(str(e))
del data["props"]
return MMPost(props=props, **data)
except TypeError as e:
print("[ERROR] Could not load dict into MMPost namedtuple")
print(str(e))
class MMChannelPosts(NamedTuple):
prev_post_id: str
next_post_id: str
order: List[str]
posts: Dict[str, MMPost]
disable_group_highlight: any
reply_count: any
@staticmethod
def load(data):
try:
posts: Dict[str, MMPost] = {
k: MMPost.load(v) for (k, v) in data["posts"].items()
}
del data["posts"]
return MMChannelPosts(posts=posts, **data)
except TypeError as e:
print("[ERROR] Could not load dict into MMUser namedtuple")
print(str(e))