Ejemplo n.º 1
0
class WeChat(object):

    TYPE_TEXT = 'text'
    TYPE_IMAGE = 'image'

    @property
    def all_sub_type(self):
        return [self.TYPE_TEXT, self.TYPE_IMAGE]

    def __init__(self, *args, **kwargs):
        super(WeChat, self).__init__()
        self._token_url = 'https://api.weixin.qq.com/cgi-bin/token'
        self._wechat_message = WeChatMessage()
        self._wechat_token = WeChatToken(url=self._token_url,
                                         appid=Config.AppID,
                                         secret=Config.AppSECRET,
                                         grant_type='client_credential')
        self._robot = Robot()

    def _token(self):
        if not g.token:
            g.token = (self._wechat_token.access_token, int(time.time()))
        return g.token

    def get_token(self):
        if g.token:
            access_token, ts = g.token
            if int(time.time()) - ts < WeChatToken.EXPIRES_IN:
                return access_token
        return self._token()

    def replay(self, input_xml):
        # TODO(haining) refactor wechat_message
        message_type, return_dict = self._wechat_message.parse(input_xml)
        if message_type not in self.all_sub_type: return ''

        message = MessageModel()
        message.wechat_id = return_dict.get('FromUserName')
        if message_type == self.TYPE_TEXT:
            message.content = return_dict.get('Content')
            message.sub_type = MessageModel.SUB_TYPE_TEXT
            # message.save()
            replay_message = self._robot.check_command(message)
            replay_xml = self._wechat_message.text(return_dict, replay_message)

        elif message_type == WeChat.SUB_TYPE_IMAGE:
            message.pic_url = return_dict.get('PicUrl')
            message.media_id = return_dict.get('MediaId')
            message.sub_type = MessageModel.SUB_TYPE_IMAGE
            message.save()
            replay_xml = self._wechat_message.image(return_dict)

        return replay_xml
Ejemplo n.º 2
0
 def __init__(self, *args, **kwargs):
     super(WeChat, self).__init__()
     self._token_url = 'https://api.weixin.qq.com/cgi-bin/token'
     self._wechat_message = WeChatMessage()
     self._wechat_token = WeChatToken(url=self._token_url,
                                      appid=Config.AppID,
                                      secret=Config.AppSECRET,
                                      grant_type='client_credential')
     self._robot = Robot()