Spaces:
Sleeping
Sleeping
| import requests | |
| import json | |
| import socket | |
| from loguru import logger | |
| from enum import Enum | |
| class MSGTYPE(Enum): | |
| INCIDENT = 1 | |
| ERROR = 2 | |
| REPORT = 3 | |
| INFO = 4 | |
| SUCCESS = 0 | |
| icons = { | |
| MSGTYPE.SUCCESS: "https://img.icons8.com/ios-glyphs/30/000000/rocket.png", | |
| MSGTYPE.INCIDENT: "https://img.icons8.com/ios-filled/30/car-accident.png", | |
| MSGTYPE.ERROR: "https://img.icons8.com/ios-glyphs/30/000000/error--v2.png", | |
| MSGTYPE.REPORT: "https://img.icons8.com/ios-glyphs/90/000000/checkmark--v2.png", | |
| MSGTYPE.INFO: "https://img.icons8.com/ios-glyphs/30/000000/info--v2.png", | |
| } | |
| class Message: | |
| host_name = socket.gethostname() | |
| host_ip = socket.gethostbyname(socket.gethostname()) | |
| type = MSGTYPE.INCIDENT | |
| type_hint = "" | |
| content = "" | |
| class dummyRequest: | |
| def __init__(self) -> None: | |
| self.status_code = 200 | |
| class Bot: | |
| def __init__( | |
| self, | |
| app_name="", | |
| bot_key="", | |
| enabled=True, | |
| ): | |
| self.Bot_URL = f"https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key={bot_key}" | |
| self.template = { | |
| "msgtype": "template_card", | |
| "template_card": { | |
| "card_type": "text_notice", | |
| "source": { | |
| "icon_url": "", | |
| "desc": app_name, | |
| "desc_color": 0 | |
| }, | |
| "main_title": { | |
| "title": "", | |
| "desc": "" | |
| }, | |
| "emphasis_content": { | |
| "title": "", | |
| "desc": "" | |
| }, | |
| "horizontal_content_list": [ | |
| ], | |
| "card_action": { | |
| "type": 1, | |
| "url": "https://huggingface.co/myscale" | |
| }, | |
| } | |
| } | |
| self.app_name = app_name | |
| self.enabled = enabled | |
| def __constuct_msg(self, msg: Message): | |
| _dict = self.template.copy() | |
| _dict["template_card"]["source"]["icon_url"] = icons[msg.type] | |
| _dict["template_card"]["main_title"]["title"] = msg.type.name[:13] | |
| _dict["template_card"]["main_title"]["desc"] = msg.type_hint[:15] | |
| _dict["template_card"]["horizontal_content_list"].extend( | |
| self.__convert_dict2clist(msg)[:6]) | |
| _dict["template_card"]["sub_title_text"] = msg.content | |
| return _dict | |
| def __convert_dict2clist(self, msg: Message): | |
| return [ | |
| {"keyname": "App Name", "value": self.app_name}, | |
| {"keyname": "Host Name", "value": msg.host_name}, | |
| {"keyname": "Host IP", "value": str(msg.host_ip)}, | |
| ] | |
| def __send_md_msg(self, msg: Message): | |
| msg = json.dumps(self.__constuct_msg(msg), ensure_ascii=True) | |
| return requests.post( | |
| self.Bot_URL, data=msg, headers={ | |
| "Content-Type": "application/json"} | |
| ) | |
| def error(self, msg: Message): | |
| msg.type = MSGTYPE.ERROR | |
| if self.enabled: | |
| return self.__send_md_msg(msg) | |
| else: | |
| return dummyRequest() | |
| def incident(self, msg: Message): | |
| msg.type = MSGTYPE.INCIDENT | |
| if self.enabled: | |
| return self.__send_md_msg(msg) | |
| else: | |
| return dummyRequest() | |
| def report(self, msg: Message): | |
| msg.type = MSGTYPE.REPORT | |
| if self.enabled: | |
| return self.__send_md_msg(msg) | |
| else: | |
| return dummyRequest() |