# Mattermost Bot module.
#  Copyright (c) 2016-2022 by Someone <someone@somenet.org> (aka. Jan Vales <jan@jvales.net>)
#  published under MIT-License

import json
import tempfile
from PIL import Image


# pylint: disable=wrong-import-position
from AbstractWSHandler import AbstractWSHandler
class WSConvertWebp(AbstractWSHandler):
    NAME = "convertwebp"

    def on_WS_EVENT(self, data):
        post = json.loads(data["data"]["post"])

        if not "metadata" in post or not "files" in post["metadata"]:
            return False

        with tempfile.TemporaryDirectory() as tmpdirname:
            tempfilenames = []
            for mmfile in post["metadata"]["files"]:
                if mmfile["mime_type"] in ["image/webp", "invalid-image/webp"]:
                    res = self.bot.api.get_file(mmfile["id"])
                    with open(tmpdirname+"/"+mmfile["id"]+".webp", 'wb') as tmpfile:
                        tmpfile.write(res.content)
                        image = Image.open(tmpdirname+"/"+mmfile["id"]+".webp").convert("RGB")
                        image.save(tmpdirname+"/"+mmfile["id"]+".png", "png")
                        tempfilenames.append(tmpdirname+"/"+mmfile["id"]+".png")

            if tempfilenames:
                root_id = post["id"]
                if post["root_id"] != "":
                    root_id = post["root_id"]
                self.bot.api.create_post(post['channel_id'], "Let me convert that webp for you", props={"from_webhook":"true"}, filepaths=tempfilenames, root_id=root_id)
                return True
