parser.py 702 B

12345678910111213141516171819202122
  1. # -*- coding: utf-8 -*-
  2. from __future__ import absolute_import, unicode_literals
  3. import xmltodict
  4. from wechatpy.enterprise.events import EVENT_TYPES
  5. from wechatpy.enterprise.messages import MESSAGE_TYPES
  6. from wechatpy.messages import UnknownMessage
  7. from wechatpy.utils import to_text
  8. def parse_message(xml):
  9. if not xml:
  10. return
  11. message = xmltodict.parse(to_text(xml))['xml']
  12. message_type = message['MsgType'].lower()
  13. if message_type == 'event':
  14. event_type = message['Event'].lower()
  15. message_class = EVENT_TYPES.get(event_type, UnknownMessage)
  16. else:
  17. message_class = MESSAGE_TYPES.get(message_type, UnknownMessage)
  18. return message_class(message)