-- coding:utf-8 --

import os
import json
import requests
import datetime
import time
import hashlib
from flask import Flask,request
app = Flask(name)

@app.route('/send', methods=['POST', 'GET'])
#发送数据
def send():
if request.method == 'POST':
post_data = request.get_data()
send_alert(bytes2json(post_data))
return 'success'
else:
return 'weclome to use prometheus alertmanager wechat webhook server!'

#转为字典
def bytes2json(data_bytes):
data = data_bytes.decode('utf8').replace("'", '"')
return json.loads(data)

#获取sign
def get_sign():

global timestamps
timestamps = str(int(round(time.time() * 1000)))
try:
    sha1_string = "8c5e96aa935290d64e" + "94f703c46d1c4d739e07514979ec58fb7f93196abd0" + timestamps
    sha1 = hashlib.sha1() 
    sha1.update(sha1_string.encode('utf-8')) 
    signs = sha1.hexdigest()
    return signs

except Exception as e:
    print(e) 

return ""

#数据格式化
def send_alert(data):
#token = os.getenv('ROBOT_TOKEN')
#if not token:

print('you must set ROBOT_TOKEN env')

#
 #return
#url = 'http://172.15.4.125:8080/weworkcore/api/wx/robot-message/send?access_token=%s' % token
#url = 'http://localhost:8080/weworkcore/api/wx/robot-message/send'
url = 'http://172.15.4.125:8080/weworkcore/api/wx/robot-message/send' 
#url = 'http://172.188.13.52:8080/weworkcore/api/wx/robot-message/send' 
#获取字典中key为alerts的数据
alerts = data['alerts']        
#list_to_dict = dict(alerts) 
#get labels
for gv in alerts:
    #get_label = j.get('labels')
    #get_annotation = j.get('annotations')
    #print("j",gv)
    #print("k",gv)
    contents = "注意新增告警信息,请尽快处理!!!\n \
     告警级别:"+ gv.get('labels').get('severity') +" \n \
     告警服务:"+ gv.get('labels').get('alertname') +" \n \
     告警描述:"+ gv.get('annotations').get('description') +" \n \
     告警时间:"+ gv.get('startsAt') +""

#curr_time = datetime.datetime.now()
curr_time = time.strftime("%Y-%m-%d %H:%M:%S %Z", time.localtime(time.time()))
sign_data = get_sign()

headers = { 
    "Content-Type":"application/json",
    "appId":"8c5e96aa935290d64e",
    "timestamp": timestamps,
    "sign": sign_data
}

send_data = {
    "messageType": "markdown",
    "content": contents,
    #"sendTime": curr_time,
    "robotKey": "cbe2866f-0d35-4064-b761-92321b665cf4"
}
print(headers)
req = requests.post(url=url, headers=headers, json=send_data)
result = req.json()
print(result)
#if result['errcode'] != 0:
#    print('notify wechat error: %s' % result['errcode'])

if name == 'main':
app.run(host='0.0.0.0', port=5000)