__init__.py 1.4 KB

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