38 lines
975 B
Python
38 lines
975 B
Python
# -*- coding: UTF-8 -*-
|
|
|
|
from dsite import settings
|
|
import utils
|
|
from utils import const
|
|
|
|
import hashlib
|
|
import base64
|
|
import hmac
|
|
import json
|
|
import requests
|
|
from django.utils.timezone import now
|
|
|
|
|
|
def gen_sign(timestamp, secret):
|
|
# 拼接timestamp和secret
|
|
string_to_sign = '{}\n{}'.format(timestamp, secret)
|
|
hmac_code = hmac.new(string_to_sign.encode("utf-8"), digestmod=hashlib.sha256).digest()
|
|
|
|
# 对结果进行base64处理
|
|
sign = base64.b64encode(hmac_code).decode('utf-8')
|
|
|
|
return sign
|
|
|
|
def request(content, msg_type=const.LARK_WEBHOOK_MSG_TYPE_TEXT):
|
|
""" content: {'text': 'xxxxx}
|
|
"""
|
|
timestamp = utils.timestamp_of(now())
|
|
data = {
|
|
"timestamp": timestamp,
|
|
"sign": gen_sign(timestamp, settings.LARK_WEBHOOK_SECRET),
|
|
"msg_type": msg_type,
|
|
"content": content}
|
|
resp = requests.post(settings.LARK_WEBHOOK_URL, data=json.dumps(data))
|
|
if resp.status_code == 200 and resp.json().get('StatusCode') == 0:
|
|
return True
|
|
return False
|