66 lines
1.9 KiB
Python
66 lines
1.9 KiB
Python
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
|
||
|
|
class WebexMedia:
|
||
|
|
MIME_MAP = {
|
||
|
|
".pdf": "application/pdf",
|
||
|
|
".doc": "application/msword",
|
||
|
|
".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
||
|
|
".xls": "application/vnd.ms-excel",
|
||
|
|
".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
||
|
|
".ppt": "application/vnd.ms-powerpoint",
|
||
|
|
".pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
||
|
|
".png": "image/png",
|
||
|
|
".jpg": "image/jpeg",
|
||
|
|
".jpeg": "image/jpeg",
|
||
|
|
".gif": "image/gif",
|
||
|
|
".bmp": "image/bmp",
|
||
|
|
}
|
||
|
|
|
||
|
|
def __init__(self, api):
|
||
|
|
self._api = api
|
||
|
|
|
||
|
|
async def send_local_file(
|
||
|
|
self,
|
||
|
|
room_id: str,
|
||
|
|
file_path: str | Path,
|
||
|
|
*,
|
||
|
|
description: str = "",
|
||
|
|
parent_id: str | None = None,
|
||
|
|
) -> str:
|
||
|
|
file_path = Path(file_path)
|
||
|
|
import aiofiles
|
||
|
|
|
||
|
|
async with aiofiles.open(file_path, "rb") as f:
|
||
|
|
file_content = await f.read()
|
||
|
|
|
||
|
|
kwargs = {"roomId": room_id, "files": [file_content]}
|
||
|
|
if description:
|
||
|
|
kwargs["text"] = description
|
||
|
|
if parent_id:
|
||
|
|
kwargs["parentId"] = parent_id
|
||
|
|
|
||
|
|
msg = self._api.messages.create(**kwargs)
|
||
|
|
return msg.id
|
||
|
|
|
||
|
|
async def send_remote_file(
|
||
|
|
self,
|
||
|
|
room_id: str,
|
||
|
|
file_url: str,
|
||
|
|
*,
|
||
|
|
description: str = "",
|
||
|
|
parent_id: str | None = None,
|
||
|
|
) -> str:
|
||
|
|
kwargs = {"roomId": room_id, "files": [file_url]}
|
||
|
|
if description:
|
||
|
|
kwargs["text"] = description
|
||
|
|
if parent_id:
|
||
|
|
kwargs["parentId"] = parent_id
|
||
|
|
|
||
|
|
msg = self._api.messages.create(**kwargs)
|
||
|
|
return msg.id
|
||
|
|
|
||
|
|
@classmethod
|
||
|
|
def _guess_mime(cls, suffix: str) -> str:
|
||
|
|
return cls.MIME_MAP.get(suffix.lower(), "application/octet-stream")
|