chat / app /services /message_parser.py
ariansyahdedy's picture
Before chat history
f169c98
raw
history blame
1.19 kB
# message_parser.py
from app.models.message_types import Message, MediaContent, MediaType
class MessageParser:
@staticmethod
def parse(raw_message: dict) -> Message:
media = {}
if image := raw_message.get("image"):
media[MediaType.IMAGE] = MediaContent(
id=image["id"],
file_path=f"{image['id']}.jpg"
)
if document := raw_message.get("document"):
media[MediaType.DOCUMENT] = MediaContent(
id=document["id"],
file_path=document.get("filename"),
filename=document.get("filename")
)
if video := raw_message.get("video"):
mime_type = video.get("mime_type")
media[MediaType.VIDEO] = MediaContent(
id=video["id"],
file_path=f"{video['id']}.{mime_type.split('/')[-1]}",
mime_type=mime_type
)
return Message(
id=raw_message["id"],
sender_id=raw_message["from"],
content=raw_message.get("text", {}).get("body"),
media=media if media else None
)