__init__.py 1.3 KB

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