def tv_post_data(): """ request 获取参数参考: https://stackoverflow.com/questions/10434599/get-the-data-received-in-a-flask-request/16664376#16664376?newreg=11b034b8c3ed488eb4fe0b6eba4097db 1. 通过 application/json 提交数据 >>> url = 'http://127.0.0.1:5566/api/v1.0/tradingview?token=XXXX' >>> data = {'text': 'xxx', 'subject': 'xxx', 'token': 'xxx'} >>> request.post(url, data=data) 2. 通过 plain/text 方式提交数据 >>> url = 'http://127.0.0.1:5566/api/v1.0/tradingview?token=XXX' >>> data = '12345' >>> headers = {'Content-Type': 'plain/text'} >>> request.post(url, headers=headers, data=data) http://127.0.0.1:5566/api/v1.0/tradingview 返回结果:{'code': 0, 'msg': '成功'}, {'code': 1, 'msg': 'token err'} :return: """ # log = LogHandler() token, text, subject = None, None, '' json_data = request.get_json() if json_data: token = json_data.get('token') text = json_data.get('text') subject = json_data.get('subject') token = request.values.get('token') if not token else token if not text or 'plain/text' in request.headers.keys().get('Content-Type'): text = request.data.decode('utf-8') if not subject: # 没有输入主题 subject = text[:10] + '...' if len(text) > 10 else text log.debug('token:{0}, text:{1}, subject:{2}'.format(token, text, subject)) if token not in TOKEN: return {'code': 1, 'msg': 'token err'}, 200 MessageManger(email=False).seng_msg(subject, text) return {'code': 0, 'msg': 'success'}, 200
class WeChatWork(object): def __init__(self): self.access_token_dict = {} self.log = LogHandler() self.post_data = WECHAT_CONFIG.get('WECHET_DEFAULT_TEXT_DATA').copy() @classmethod def access_token_api(cls): access_token_api = WECHAT_CONFIG.get('ACCESS_TOKEN_API') corpid = WECHAT_CONFIG.get('CORPID') secret = WECHAT_CONFIG.get('CORPSECRET') return access_token_api.format(ID=corpid, SECRET=secret) @property def message_send_api(self): return WECHAT_CONFIG.get('MESSAGE_SEND_API').format( ACCESS_TOKEN=self.access_token) @property def access_token(self): if self.access_token_dict and \ time.time() - self.access_token_dict.get('expire_time', 0) <= 7200: self.log.debug('get access token from cookies') return self.access_token_dict.get('access_token') ret = requests.get(WeChatWork.access_token_api()).json() if not ret.get('errcode'): access_token = ret.get('access_token') self.access_token_dict['access_token'] = access_token self.access_token_dict['expire_time'] = time.time() self.log.debug('get access token: {0}'.format(access_token)) return access_token else: self.log.error('get access token fail !!') def send_msg(self, subject, content): """ api 格式 { "touser" : "UserID1|UserID2|UserID3", "toparty" : "PartyID1|PartyID2", "totag" : "TagID1 | TagID2", "msgtype" : "text", "agentid" : 1, "text" : { "content" : "你的快递已到,请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>,聪明避开排队。" }, "safe":0, "enable_id_trans": 0, "enable_duplicate_check": 0, "duplicate_check_interval": 1800 } :param subject: :param content: :return: """ self.post_data['text'][ 'content'] = "subject: {0} \n content: {1}".format( subject, content) ret = requests.post(self.message_send_api, json=self.post_data).json() if 0 == ret.get('errcode'): self.log.info('send wechat msg success') else: self.log.error( 'send wechat msg fail!! error code:{0}, error msg:{1}'.format( ret.get('errcode'), ret.get('errmsg')))