From 6868f20065ef2e46f295c34f27c0736d54283535 Mon Sep 17 00:00:00 2001
From: jvoisin <julien.voisin@dustri.org>
Date: Mon, 2 Apr 2018 17:36:26 +0200
Subject: [PATCH] `parser_factory` now returns the mtype too

---
 main.py               | 7 +++----
 src/office.py         | 4 ++--
 src/parser_factory.py | 4 ++--
 tests/test_libmat2.py | 2 +-
 4 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/main.py b/main.py
index 3cff758..877bc70 100644
--- a/main.py
+++ b/main.py
@@ -20,9 +20,8 @@ def create_arg_parser():
     return parser
 
 def show_meta(filename:str):
-    p = parser_factory.get_parser(filename)
+    p, mtype = parser_factory.get_parser(filename)
     if p is None:
-        mtype, _ = mimetypes.guess_type(filename)
         print("[-] %s's format (%s) is not supported" % (filename, mtype))
         return
     for k,v in p.get_meta().items():
@@ -38,9 +37,9 @@ def main():
         return 0
 
     for f in args.files:
-        p = parser_factory.get_parser(f)
+        p, mtype = parser_factory.get_parser(f)
         if p is None:
-            print("[-] %s's format (%s) is not supported" % (f, "meh"))
+            print("[-] %s's format (%s) is not supported" % (f, mtype))
             continue
         p.remove_all()
 
diff --git a/src/office.py b/src/office.py
index 0a34185..8d478c1 100644
--- a/src/office.py
+++ b/src/office.py
@@ -38,9 +38,9 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser):
 
     def _clean_internal_file(self, item:zipfile.ZipInfo, temp_folder:str, zin:zipfile.ZipFile, zout:zipfile.ZipFile):
         zin.extract(member=item, path=temp_folder)
-        tmp_parser = parser_factory.get_parser(os.path.join(temp_folder, item.filename))
+        tmp_parser, mtype = parser_factory.get_parser(os.path.join(temp_folder, item.filename))
         if tmp_parser is None:
-            print("%s isn't supported" % item.filename)
+            print("%s's format (%s) isn't supported" % (item.filename, mtype))
             return
         tmp_parser.remove_all()
         zinfo = zipfile.ZipInfo(item.filename)
diff --git a/src/parser_factory.py b/src/parser_factory.py
index 176ff2b..226234b 100644
--- a/src/parser_factory.py
+++ b/src/parser_factory.py
@@ -15,6 +15,6 @@ def get_parser(filename: str):
     mtype, _ = mimetypes.guess_type(filename)
     for c in abstract.AbstractParser.__subclasses__():
         if mtype in c.mimetypes:
-            return c(filename)
+            return c(filename), mtype
     print('factory: %s is not supported' % mtype)
-    return None
+    return None, mtype
diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py
index 8aa91f0..b52e8ce 100644
--- a/tests/test_libmat2.py
+++ b/tests/test_libmat2.py
@@ -72,7 +72,7 @@ class TestDeepCleaning(unittest.TestCase):
         for subdir, dirs, files in os.walk(tempdir):
             for f in files:
                 complete_path = os.path.join(subdir, f)
-                inside_p = parser_factory.get_parser(complete_path)
+                inside_p, _ = parser_factory.get_parser(complete_path)
                 if inside_p is None:
                     continue
                 print('[+] %s is clean inside %s' %(complete_path, p.filename))
-- 
GitLab