1
0
Fabian Peter Hammerle 8 лет назад
Родитель
Сommit
a6a6ac1370
1 измененных файлов с 19 добавлено и 2 удалено
  1. 19 2
      order-confirmation-mail-parser

+ 19 - 2
order-confirmation-mail-parser

@@ -236,6 +236,9 @@ def parse_oebb(msg):
 
 def parse_mytaxi(msg):
 
+    if not 'mytaxi' in msg.get_payload()[0].get_payload()[0].get_payload(decode = True):
+        raise Exception('no mytaxi mail')
+
     pdf_compressed = msg.get_payload()[1].get_payload(decode = True)
     pdftk = subprocess.Popen(
             ['pdftk - output - uncompress'],
@@ -323,17 +326,31 @@ def parse(msg):
 
     raise Exception('failed to parse')
 
-def compute():
+def compute(register_path):
 
     msg = email.message_from_string(sys.stdin.read())
 
     order = parse(msg)
 
-    print(yaml.safe_dump(order, default_flow_style = False))
+    if register_path:
+        with open(register_path, 'r') as register:
+            orders = yaml.load(register.read().decode('utf-8'))
+        if not orders:
+            orders = {}
+        if order.platform not in orders:
+            orders[order.platform] = {}
+        if order.order_id in orders[order.platform]:
+            raise Exception('already registered')
+        orders[order.platform][order.order_id] = order
+        with open(register_path, 'w') as register:
+            register.write(yaml.safe_dump(orders, default_flow_style = False))
+    else:
+        print(yaml.safe_dump(order, default_flow_style = False))
 
 def _init_argparser():
 
     argparser = argparse.ArgumentParser(description = None)
+    argparser.add_argument('--register', metavar = 'path', dest = 'register_path')
     return argparser
 
 def main(argv):