import requests

from core.base import CommandPlugin
from core.cq import at, image, text


from core.utils import register_plugin
@register_plugin
class RandomReferencePlugin(CommandPlugin):
    name = 'random_reference'
    description = '发送一张随机参考图片。'
    COMMANDS = ("/随机参考", "/隨機參考")

    PICSUM_URL = "https://picsum.photos/512"

    def _resolve_image_url(self) -> str:
        # picsum.photos returns a redirect to the actual image.
        proxies = {
            "http": "http://127.0.0.1:7890",
            "https": "http://127.0.0.1:7890",
        }
        try:
            resp = requests.get(self.PICSUM_URL, proxies=proxies, timeout=30, allow_redirects=False)
        except Exception:
            resp = requests.get(self.PICSUM_URL, timeout=30, allow_redirects=False)

        if resp.status_code in (301, 302, 303, 307, 308):
            loc = resp.headers.get("Location", "")
            if loc:
                return loc
        return self.PICSUM_URL

    def handle(self):
        user_id = self.bot_event.user_id
        url = self._resolve_image_url()

        if user_id:
            self.api.send_msg(at(user_id), text("随机参考："), image(url))
        else:
            self.api.send_msg(text("随机参考："), image(url))

