feat(utils lark client): [A] add lark webhook client
[A] add lark webhook client Signed-off-by: Ching <loooching@gmail.com>
This commit is contained in:
parent
0228221b91
commit
973849540a
@ -1,45 +0,0 @@
|
|||||||
from .settings_default import *
|
|
||||||
|
|
||||||
ALLOWED_HOSTS = ['*']
|
|
||||||
|
|
||||||
CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
|
|
||||||
# CORS_ALLOW_ALL_ORIGINS = True # If this is used then `CORS_ALLOWED_ORIGINS` will not have any effect
|
|
||||||
CORS_ALLOWED_ORIGINS = [
|
|
||||||
'http://localhost:8080',
|
|
||||||
'http://127.0.0.1:8080',
|
|
||||||
'http://192.168.1.101:8080'
|
|
||||||
]
|
|
||||||
|
|
||||||
CORS_ALLOW_METHODS = [
|
|
||||||
"DELETE",
|
|
||||||
"GET",
|
|
||||||
"OPTIONS",
|
|
||||||
"PATCH",
|
|
||||||
"POST",
|
|
||||||
"PUT",
|
|
||||||
]
|
|
||||||
|
|
||||||
CORS_ALLOW_HEADERS = [
|
|
||||||
"accept",
|
|
||||||
"accept-encoding",
|
|
||||||
"authorization",
|
|
||||||
"content-type",
|
|
||||||
"dnt",
|
|
||||||
"origin",
|
|
||||||
"user-agent",
|
|
||||||
"x-csrftoken",
|
|
||||||
"x-requested-with",
|
|
||||||
]
|
|
||||||
|
|
||||||
CORS_ALLOW_HEADERS = ('*')
|
|
||||||
|
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
||||||
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
||||||
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
|
|
||||||
|
|
||||||
STATICFILES_DIRS = [
|
|
||||||
os.path.join(BASE_DIR, "frontend/dist/"),
|
|
||||||
]
|
|
||||||
|
|
||||||
MEDIA_URL = '/media/'
|
|
||||||
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
|
|
||||||
@ -155,3 +155,7 @@ REST_FRAMEWORK = {
|
|||||||
CORS_ALLOWED_ORIGINS = []
|
CORS_ALLOWED_ORIGINS = []
|
||||||
CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
|
CORS_ALLOW_CREDENTIALS = True # 允许携带cookie
|
||||||
# CORS_ALLOW_ALL_ORIGINS = False # If this is used then `CORS_ALLOWED_ORIGINS` will not have any effect
|
# CORS_ALLOW_ALL_ORIGINS = False # If this is used then `CORS_ALLOWED_ORIGINS` will not have any effect
|
||||||
|
|
||||||
|
|
||||||
|
LARK_WEBHOOK_URL = ''
|
||||||
|
LARK_WEBHOOK_SECRET = ''
|
||||||
|
|||||||
@ -19,3 +19,6 @@ RECIPE_TYPE_CHOICE = [
|
|||||||
|
|
||||||
FILTER_EXACT = ['exact']
|
FILTER_EXACT = ['exact']
|
||||||
FILTER_GTE_LTE = ['exact', 'gte', 'gt', 'lte', 'lt']
|
FILTER_GTE_LTE = ['exact', 'gte', 'gt', 'lte', 'lt']
|
||||||
|
|
||||||
|
|
||||||
|
LARK_WEBHOOK_MSG_TYPE_TEXT = 'text'
|
||||||
|
|||||||
37
utils/lark.py
Normal file
37
utils/lark.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
# -*- 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
|
||||||
Loading…
x
Reference in New Issue
Block a user