from qcloudsms_py import SmsSingleSender
from qcloudsms_py.httpclient import HTTPError
import time


class Client(object):

    def __init__(self):
        appid = 1400278842  # 短信应用 SDK AppID
        appkey = '9514696ecf07081a42b4a19bfaf5bf2e'  # 短信应用 SDK AppKey
        self.ssender = SmsSingleSender(appid, appkey)
        self.sms_sign = '泽鹿安全'

    def for_add_vul(self, phone_numbers, find_at, address, vul_id, risk):
        """
        新增漏洞提醒
        """
        template_id = 479975
        params = [str(find_at), str(address), str(vul_id), str(risk)]
        for phone_number in phone_numbers:
            try:
                result = self.ssender.send_with_param(86, str(phone_number),
                                                      template_id, params,
                                                      sign=self.sms_sign,
                                                      extend='', ext='')
                print(result)
            except HTTPError as e:
                print(e)
            except Exception as e:
                print(e)

    def for_close_task(self, phone_numbers, task_id, date_time, username, state):
        """
        工单关闭提醒
        """
        template_id = 479977
        params = [str(task_id), str(date_time), str(username), str(state)]
        for phone_number in phone_numbers:
            try:
                result = self.ssender.send_with_param(86, str(phone_number),
                                                      template_id, params,
                                                      sign=self.sms_sign,
                                                      extend='', ext='')
                print(result)
            except HTTPError as e:
                print(e)
            except Exception as e:
                print(e)

    def for_remind_task(self, phone_numbers, task_id, residue_time):
        """
        工单时限提醒
        """
        template_id = 479982
        params = [str(task_id), str(residue_time)]
        for phone_number in phone_numbers:
            try:
                result = self.ssender.send_with_param(86, str(phone_number),
                                                      template_id, params,
                                                      sign=self.sms_sign,
                                                      extend='', ext='')
                print(result)
            except HTTPError as e:
                print(e)
            except Exception as e:
                print(e)

    def for_claim_task(self, phone_numbers, task_id, username, action):
        """
        工单状态变化
        """
        template_id = 503921
        year = time.strftime('%Y', time.localtime(int(time.time())))
        month = time.strftime('%m', time.localtime(int(time.time())))
        day = time.strftime('%d', time.localtime(int(time.time())))
        hour = time.strftime('%H', time.localtime(int(time.time())))
        minute = time.strftime('%M', time.localtime(int(time.time())))
        params = [str(task_id)[-8:], str(year), str(month), str(day), str(hour), str(minute), str(username)[-8:],
                  action[-8:]]
        for phone_number in phone_numbers:
            try:
                result = self.ssender.send_with_param(86, str(phone_number),
                                                      template_id, params,
                                                      sign=self.sms_sign,
                                                      extend='', ext='')
                print(result)
            except HTTPError as e:
                print(e)
            except Exception as e:
                print(e)

    def for_vul_message(self, phone_numbers, find_at, address):
        """
        漏洞提醒
        """
        template_id = 630480
        params = [str(find_at), str(address)]
        for phone_number in phone_numbers:
            try:
                result = self.ssender.send_with_param(86, str(phone_number),
                                                      template_id, params,
                                                      sign=self.sms_sign,
                                                      extend='', ext='')
                print(result)
                return result
            except HTTPError as e:
                print(e)
            except Exception as e:
                print(e)


if __name__ == '__main__':
    # --- init ---
    client = Client()

    # --- test ---