set_avatar_from_file: raise if file isn't an image

This commit is contained in:
miruka
2019-11-12 09:48:11 -04:00
parent 5f04628178
commit 9f3bb1aa4d
3 changed files with 15 additions and 7 deletions

View File

@@ -62,6 +62,13 @@ class InvalidUserInContext(Exception):
class UneededThumbnail(Exception):
pass
@dataclass
class UnthumbnailableError(Exception):
exception: Optional[Exception] = None
@dataclass
class BadMimeType(Exception):
wanted: str = field()
got: str = field()

View File

@@ -25,8 +25,8 @@ import nio
from . import __about__, utils
from .errors import (
InvalidUserInContext, MatrixError, UneededThumbnail, UnthumbnailableError,
UserNotFound,
BadMimeType, InvalidUserInContext, MatrixError, UneededThumbnail,
UnthumbnailableError, UserNotFound,
)
from .html_filter import HTML_FILTER
from .models.items import (
@@ -617,7 +617,11 @@ class MatrixClient(nio.AsyncClient):
async def set_avatar_from_file(self, path: Union[Path, str]) -> None:
# TODO: check if mime is image
mime = utils.guess_mime(path)
if mime.split("/")[0] != "image":
raise BadMimeType(wanted="image/*", got=mime)
await self.set_avatar((await self.upload_file(path))[0])