__init__.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # -*- coding: utf-8 -*-
  2. import email
  3. import traceback
  4. import amazon
  5. import banggood
  6. import hm
  7. import ikea
  8. import ingdiba
  9. import lieferservice
  10. import mytaxi
  11. import oebb
  12. import thomann
  13. import uber
  14. import wienerlinien
  15. import yipbee
  16. order_confirmation_parsers = [
  17. amazon.parse_order_confirmation_mail,
  18. banggood.parse_order_confirmation_mail,
  19. hm.parse_order_confirmation_mail,
  20. ikea.parse_order_confirmation_mail,
  21. lieferservice.parse_order_confirmation_mail,
  22. mytaxi.parse_order_confirmation_mail,
  23. oebb.parse_order_confirmation_mail,
  24. thomann.parse_order_confirmation_mail,
  25. uber.parse_order_confirmation_mail,
  26. wienerlinien.parse_order_confirmation_mail,
  27. yipbee.parse_order_confirmation_mail,
  28. ]
  29. def parse_order_confirmation_mail(mail):
  30. assert isinstance(mail, email.message.Message)
  31. tracebacks = {}
  32. for parser in order_confirmation_parsers:
  33. try:
  34. return parser(mail = mail)
  35. except:
  36. tracebacks['%s.%s' % (parser.__module__, parser.__name__)] = traceback.format_exc()
  37. raise Exception('\n'.join(['%s:\n%s' % (f, t) for (f, t) in tracebacks.items()]))