__init__.py 1.2 KB

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