__init__.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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 kickstarter
  10. import lieferservice
  11. import mytaxi
  12. import oebb
  13. import thomann
  14. import uber
  15. import wienerlinien
  16. import yipbee
  17. order_confirmation_parsers = [
  18. amazon.parse_order_confirmation_mail,
  19. banggood.parse_order_confirmation_mail,
  20. hm.parse_order_confirmation_mail,
  21. ikea.parse_order_confirmation_mail,
  22. kickstarter.parse_order_confirmation_mail,
  23. lieferservice.parse_order_confirmation_mail,
  24. mytaxi.parse_order_confirmation_mail,
  25. oebb.parse_order_confirmation_mail,
  26. thomann.parse_order_confirmation_mail,
  27. uber.parse_order_confirmation_mail,
  28. wienerlinien.parse_order_confirmation_mail,
  29. yipbee.parse_order_confirmation_mail,
  30. ]
  31. def parse_order_confirmation_mail(mail):
  32. assert isinstance(mail, email.message.Message)
  33. tracebacks = {}
  34. for parser in order_confirmation_parsers:
  35. try:
  36. return parser(mail = mail)
  37. except:
  38. tracebacks['%s.%s' % (parser.__module__, parser.__name__)] = traceback.format_exc()
  39. raise Exception('\n'.join(['%s:\n%s' % (f, t) for (f, t) in tracebacks.items()]))